gpt4 book ai didi

mysql - MySQL 中奇怪的 GROUP_CONCAT 行为

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

我今天在使用 MySQL 函数 GROUP_CONCAT 时遇到了一个非常奇怪的问题:

我有以下查询:

SELECT SUM(total) FROM order WHERE customer_id='X' AND order_status_id IN ((SELECT GROUP_CONCAT(order_status_id SEPARATOR ',') FROM order_status WHERE profit='1'))

但是返回 NULLL,但是:

SELECT SUM(total) FROM order WHERE customer_id='X' AND order_status_id IN (1,2,3,4,5,6,7,8)

这与第一个连接状态 id 的查询一样有效,但是它们返回 NULL 作为总数

最佳答案

GROUP_CONCAT() 返回一个字符串,这是一个单一的值。 IN() 子句虽然接受以逗号分隔的值列表,但不会只接受您提供的任何 字符串,然后解析出各个值。

它将 GROUP_CONCAT() 的结果视为单个字符串单元,它可以是逗号分隔列表中许多其他字符串的成员,但没有行匹配 order_status_id = '1,3,5,6',这是 RDBMS 最终看到的内容。

如果你想为 IN() 子句使用查询,请使用子查询。 IN () 子句知道如何处理子查询返回的行集并将适本地对待它。

SELECT
SUM(total)
FROM order
WHERE
customer_id='X'
AND order_status_id IN (
SELECT order_status_id FROM order_status WHERE profit = '1'
);

关于mysql - MySQL 中奇怪的 GROUP_CONCAT 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847695/

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