到目前为止,我这样做:
SELECT * FROM table_name WHERE column in(var1,var2,var3) or column is NULL
我有两次重复列名的问题,因为in()不能将null作为参数,它也不返回错误,只返回0列。 (也许一些可以引用最后一个名为列的神奇变量?)
答案 0 :(得分:1)
此:
'column'
是字符串文字,而不是列名。所以这个:
'column' in(var1,var2,var3) or 'column' is NULL
除非var1
,var2
或var3
恰好是字符串'column'
,否则将无法匹配任何内容。尝试删除列名称上的引号:
SELECT * FROM table_name WHERE column in (var1, var2, var3) or column is NULL
答案 1 :(得分:1)
不重复列名的另一个选项:
SELECT * FROM table_name WHERE coalesce(column,'NULL') in (var1,var2,var3,'NULL')
答案 2 :(得分:0)
你可以做一个工会选择:
SELECT
*
FROM
`table_name`
WHERE
`column` IN (var1, var2, var3)
UNION
SELECT
*
FROM
`table_name`
WHERE
`column` IS NULL