GROUP_CONCAT 带有 WHERE IN 子句
GROUP_CONCAT with WHERE IN clause
我正在尝试将具有特定匹配字符串的多个列组合在一起。
SELECT GROUP_CONCAT(`users`.`id`)
FROM `users`
WHERE `users`.`name`
IN ('john','doe','foo','bar');
我没有收到错误,只是结果是 NULL
,即使在 table.
中有包含所有这些名称的列
如何构造查询以实现预期结果?
问:如何构造查询以实现预期结果?
A:备份到上一个查询,那个正在运行的查询,returning 预期结果。然后弄清楚为什么您对该查询所做的更改会导致意外的 behavior/unexpected 结果。
例如,您开始编写查询时可能是这样的:
SELECT u.id
, u.name
FROM users u
ORDER
BY u.name
然后您 运行 对其进行测试,并验证它是否 return 达到了预期的结果。是 id
非 NULL。 name
列是否已填充?
接下来,您添加了 WHERE
子句,以查看您是否可以获得包含 'john'.
的 name
列的行
SELECT u.id
, u.name
FROM users u
WHERE u.name = 'john'
ORDER
BY u.name
当你 运行 那样时,return 是否达到预期效果?如果不是,我们需要弄清楚为什么不。该查询与正在运行的查询有何不同。
在我们得到一个 return 出乎意料的结果的查询之前,我们在编写查询时通过这种逐步细化取得了多大进展?告诉我们。
然后解释为什么将该查询更改为不同的查询会产生特定的结果。即 "expected outcome" 是什么结果。为什么会出现这种结果?
没有规范,就不可能提出任何建议。示例数据和示例输出将大大有助于阐明需求。您甚至可以设置一个 SQLFiddle 示例。
如果您向一位忙碌的同事寻求帮助,您应该展示一些工作,以及您的进展情况。而不仅仅是 "here's a query that doesn't work".
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
否则,我们只是在猜测您期望 returned 的结果。
也许答案就像将表达式包装在 IFNULL
中一样简单
SELECT IFNULL( GROUP_CONCAT(foo) ,'') AS bar
,
但我们可能会猜测完全错误的树。
我正在尝试将具有特定匹配字符串的多个列组合在一起。
SELECT GROUP_CONCAT(`users`.`id`)
FROM `users`
WHERE `users`.`name`
IN ('john','doe','foo','bar');
我没有收到错误,只是结果是 NULL
,即使在 table.
如何构造查询以实现预期结果?
问:如何构造查询以实现预期结果?
A:备份到上一个查询,那个正在运行的查询,returning 预期结果。然后弄清楚为什么您对该查询所做的更改会导致意外的 behavior/unexpected 结果。
例如,您开始编写查询时可能是这样的:
SELECT u.id
, u.name
FROM users u
ORDER
BY u.name
然后您 运行 对其进行测试,并验证它是否 return 达到了预期的结果。是 id
非 NULL。 name
列是否已填充?
接下来,您添加了 WHERE
子句,以查看您是否可以获得包含 'john'.
name
列的行
SELECT u.id
, u.name
FROM users u
WHERE u.name = 'john'
ORDER
BY u.name
当你 运行 那样时,return 是否达到预期效果?如果不是,我们需要弄清楚为什么不。该查询与正在运行的查询有何不同。
在我们得到一个 return 出乎意料的结果的查询之前,我们在编写查询时通过这种逐步细化取得了多大进展?告诉我们。
然后解释为什么将该查询更改为不同的查询会产生特定的结果。即 "expected outcome" 是什么结果。为什么会出现这种结果?
没有规范,就不可能提出任何建议。示例数据和示例输出将大大有助于阐明需求。您甚至可以设置一个 SQLFiddle 示例。
如果您向一位忙碌的同事寻求帮助,您应该展示一些工作,以及您的进展情况。而不仅仅是 "here's a query that doesn't work".
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
否则,我们只是在猜测您期望 returned 的结果。
也许答案就像将表达式包装在 IFNULL
SELECT IFNULL( GROUP_CONCAT(foo) ,'') AS bar
,
但我们可能会猜测完全错误的树。