group\u concat with where in子句

t8e9dugd  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(404)

我尝试将具有某些匹配字符串的多个列组合在一起。

SELECT GROUP_CONCAT(`users`.`id`) 
FROM `users` 
WHERE `users`.`name`
IN ('john','doe','foo','bar');

我没有出错,只是结果是 NULL ,即使表中有包含所有这些名称的列。
如何构造查询以实现预期结果?

nwlqm0z1

nwlqm0z11#

问:如何构造查询以实现预期结果?
答:备份到上一个查询,即正在工作的查询,并返回预期结果。然后找出对该查询所做的更改导致意外行为/意外结果的原因。
例如,您可能开始这样编写查询:

SELECT u.id
     , u.name 
  FROM users u
 ORDER
    BY u.name

您运行它来测试它,并验证它是否返回了预期的结果。是 id 非空。是 name 是否填充了列?
接下来,您添加了 WHERE 子句,以查看是否可以获取具有 name 包含“john”的列。

SELECT u.id
     , u.name 
  FROM users u
 WHERE u.name = 'john'
 ORDER
    BY u.name

运行时是否返回预期结果?如果没有,我们需要找出原因。这个查询和正在运行的查询有什么不同。
在编写查询时,在我们得到返回意外结果的查询之前,我们用这种逐步细化的方法做了多远?给我们看看。
然后解释为什么对该查询所做的更改,到另一个查询中,会产生一个特定的结果。i、 e.“预期结果”是什么结果。为什么会有这样的结果?
没有规范,就不可能提出任何建议。示例数据和示例输出将大大有助于澄清需求。您甚至可以建立一个sqlfiddle示例。
如果你在向一位忙碌的同事寻求帮助,你就应该拿出一些工作,看看你做了多少。而不仅仅是“这里有一个不起作用的查询”。
https://ericlippert.com/2014/03/05/how-to-debug-small-programs/
否则,我们只是猜测您希望返回的结果。
也许答案就像把一个表达式 Package 在一个 IFNULL ```
SELECT IFNULL( GROUP_CONCAT(foo) ,'') AS bar
,

但我们很可能猜错了方向。

相关问题