gpt4 book ai didi

mysql - 允许使用 IN 子句重复记录

转载 作者:行者123 更新时间:2023-11-29 01:52:30 25 4
gpt4 key购买 nike

这似乎是一项简单的任务,但我想我不知道在互联网上找到合适的词。

我想要的就是这样:

SELECT SUM(price) FROM products WHERE id IN (5, 10, 10, 10, 13, 15, 18, 18);

这基本上会返回以下结果:

price_of_5 + price_of_10 + price_of_10 + price_of_10 + 
price_of_13 + price_of_15 + price_of_18 + price_of_18

也就是说,其概念是SELECTIN 子句中指定的行数完全相同,即使多次指定一个值也是如此。

编辑

这是一个简单的测试环境(or a fiddle)

1- 创建表

CREATE TABLE products (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL,
`price` float NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

2- 喂 table

INSERT INTO products VALUES (1, 'Apple', 5), (2, 'Orange', 6), (3, 'Grape', 10), (4, 'Watermelon', 20), (5, 'Cashew', 7);

3- 我想要的示例:

SELECT SUM(price) FROM products WHERE id IN (1, 2, 2, 4);

结果:31 (5 + 6 + 20)

预期:37(5 + 6 + 6 + 20)

最佳答案

这是我的方法:

SELECT SUM(p.price) 
FROM (
SELECT 5 id
UNION ALL
SELECT 10
UNION ALL
SELECT 10
UNION ALL
SELECT 10
UNION ALL
SELECT 13
UNION ALL
SELECT 15
UNION ALL
SELECT 18
UNION ALL
SELECT 18
) as t

INNER JOIN products p
ON t.id = p.id;

更新 根据提供的数据样本和 fiddle ,您可以为您的案例转换查询,例如:

http://sqlfiddle.com/#!9/189bc/4

SELECT SUM(p.price) 
FROM (
SELECT 1 id
UNION ALL
SELECT 2
UNION ALL
SELECT 2
UNION ALL
SELECT 4
) as t
INNER JOIN products p
ON t.id = p.id;

关于mysql - 允许使用 IN 子句重复记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37924993/

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