gpt4 book ai didi

如果 QTY > 1,则 MySQL 输出多行

转载 作者:行者123 更新时间:2023-11-29 01:32:56 26 4
gpt4 key购买 nike

如果表中某个字段大于1,有没有办法输出多个表行。

这是我的例子:

我正在构建一个拍卖网站,我们可以在该网站上出售抽奖券。门票存储在这样的表中:

id、order_id、product_id、数量、价格

当需要打印票时,我想将其全部转储到 CSV 文件中。到目前为止,我正在执行此查询(简化、省略 INNER JOIN):

SELECT id, order_id, product_id, qty, price FROM order_details

然后在上面运行类似下面的循环:

foreach($rows as $row) {
for($i = 0; $i < $row['qty']; $i++) {
$tickets[] = $row;
}
}

以便我为每个数量获得一个单独的条目(以便人们获得正确数量的条目...)。

有没有办法在 SQL 本身中实现这一点,使每一行都乘以 x 次,其中 x 是表中的某个字段(本例中为 qty)?

最佳答案

您可以完全在 MySQL 中使用 blackhole 来完成此操作 table 和一个 trigger

设置表格
首先创建要插入的黑洞表和黑洞将重新路由到的内存(或临时表)。

CREATE TABLE Blackhole1 LIKE order_details ENGINE = BLACKHOLE;

CREATE TABLE temp_order_results LIKE order_details ENGINE = MEMORY;

设置触发器
现在在黑洞表上创建一个触发器,将插入重新路由到内存表,复制具有 qty > 1 的行。

DELIMITER $$

CREATE TRIGGER ai_Blackhole1_each AFTER INSERT ON blackhole1 FOR EACH ROW
BEGIN
DECLARE ACount INTEGER;
SET ACount = new.qty;
WHILE ACount > 1 DO BEGIN
INSERT INTO temp_order_results
VALUES (new.id, new.order_id, new.product_id, 1, new.price)
SET ACount = ACount - 1;
END; END WHILE;
END $$

DELIMITER ;

执行查询的语句
现在插入 .. 选择到黑洞中

INSERT INTO blackhole1 
SELECT id, order_id, product_id, qty, price FROM order_details;

并选择 temp_order_results。

SELECT id, order_id, product_id, qty, price FROM order_details;

关于如果 QTY > 1,则 MySQL 输出多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com