Mysql 使用WHERE-IN返回NULL

Mysql 使用WHERE-IN返回NULL,mysql,Mysql,我正在使用此查询: SELECT GROUP_CONCAT(column1) as values FROM archive WHERE column2 IN (21, 22) 查询返回值​​从列2具有指定值之一的行中删除列1​​. 问题是在这种情况下,表中找不到值21。所以我需要返回一个空值。但是查询只返回找到的值 查询正在返回: File 1 我期望: File 1, NULL 也可以使用右侧外部联接,左侧外部联接,案例以及不存在。下面的一些例子。。。(带有指向SQL Fiddle工作示

我正在使用此查询:

SELECT GROUP_CONCAT(column1) as values FROM archive WHERE column2 IN (21, 22)
查询返回值​​从列2具有指定值之一的行中删除列1​​.

问题是在这种情况下,表中找不到值21。所以我需要返回一个空值。但是查询只返回找到的值

查询正在返回:

File 1
我期望:

File 1, NULL

也可以使用
右侧外部联接
左侧外部联接
案例
以及
不存在
。下面的一些例子。。。(带有指向SQL Fiddle工作示例的链接)

右外部联接到临时表(选择#并集) SQL Fiddle:

右外联接到第二个表 SQLFIDLE:

关于:

SELECT column2, GROUP_CONCAT(column1) as values FROM archive WHERE column2 IN (21, 22)
       GROUP BY column2;
这将在两个不同的行上生成21和22的结果

请注意,如果希望得到可预测/可再现的结果,则应向聚合函数提供一个
ORDER BY
子句

如果您真的想要“在列中”,请尝试类似的方法(未测试--抱歉):


你能解释得更清楚些吗?您看到的是()中的
的预期行为。是否需要两个值
21和22
,而不是匹配任何一个值(这是()中的
IN
所做的)?
SELECT GROUP_CONCAT(
  CASE WHEN COLUMN1 IS NULL THEN "NULL" ELSE COLUMN1 END)
FROM archive
RIGHT OUTER JOIN temporary tmp ON tmp.id=archive.column2;
SELECT column2, GROUP_CONCAT(column1) as values FROM archive WHERE column2 IN (21, 22)
       GROUP BY column2;
SELECT * FROM 
     (SELECT GROUP_CONCAT(column1) as values FROM archive 
                                             WHERE column2 = 21 GROUP BY column2) AS A
JOIN (SELECT GROUP_CONCAT(column1) as values FROM archive 
                                             WHERE column2 = 22 GROUP BY column2) AS B;