我希望获得此查询以便提取所有内容,即null
和null
两个值。
SELECT * FROM `tbl` WHERE `column` IS NULL AND NOT NULL
我实际上期望得到相同的结果,好像根本不提供任何WHERE
:
# should produce the same result set
SELECT * FROM `tbl` WHERE `column` IS NULL AND NOT NULL
SELECT * FROM `tbl`
尽管条款IS NULL AND NOT NULL
在语法上是正确的,但它并没有返回正确的结果,它根本不会返回任何内容。是否可以使用MySQL?
IS NULL AND NOT NULL
- 正确的语法,但错误的结果 - 只返回任何内容
IS NULL OR NOT NULL
- 与上述相同
IS NULL AND IS NOT NULL
- 错误,语法错误
UPD:
与NOT
一起使用时GROUP BY
的顺序有意义。
col IS NOT NULL OR col IS NULL
- 确定
col IS NULL OR col IS NOT NULL
- GROUP BY
无法正常使用
答案 0 :(得分:1)
尝试:
WHERE `column` IS NULL OR `column` IS NOT NULL
但这种情况没有意义,因为它与无条件相同。
答案 1 :(得分:0)
让我们从内到外检验这个条件。 not
是一个布尔运算符,它否定传递给它的布尔值。否定null
会返回null
。现在,您在布尔条件(and
)(可能是column is null
或true
和false
)之间应用了null
运算符,这将导致{{ 1}}由于null.
不是null
,因此此查询不会返回任何行。
简而言之,您的病情有两个问题
true
而不是null
。您的逻辑需要null
运算符。总结一下:
or
答案 2 :(得分:0)
SELECT *
FROM `tbl` WHERE col1 in
(SELECT col1
FROM
(SELECT DISTINCT col1
FROM `tbl`
WHERE `column` IS NULL
UNION ALL
SELECT DISTINCT col1
FROM `tbl`
WHERE `column` IS NOT NULL) A
GROUP BY col1
HAVING COUNT(*) > 1);
这将为您提供所需的结果。 在这里,col1是表中具有重复数据的列。随时问任何问题。