我有一个这样的表(实际上我的表中会有更多的列)。
CREATE TABLE mytable(
ID int PRIMARY KEY,
Name varchar(50),
teamName varchar(255),
Create_Date DATETIME
);
下面是一些示例数据
INSERT INTO mytable VALUES (1,NULL,'TEST1','2017-01-02');
INSERT INTO mytable VALUES (2,NULL,'TEST2',NULL);
INSERT INTO mytable VALUES (3,'KK','TEST3','2017-01-02');
INSERT INTO mytable VALUES (4,NULL,NULL,NULL);
我想得到行,列中至少有一个空。
我试过这个。我得到了预期的结果。
SELECT *
FROM mytable
WHERE Name IS NULL OR teamName IS NULL OR Create_Date IS NULL
预期结果
| ID | Name | teamName | Create_Date |
|----|--------|----------|----------------------|
| 1 | (null) | TEST1 | 2017-01-02T00:00:00Z |
| 2 | (null) | TEST2 | (null) |
| 4 | (null) | (null) | (null) |
但我不知道有没有更简单的方法来达到这个效果。
我尝试在中使用with is null,但无效。
SELECT *
FROM mytable
WHERE IS NULL IN (Name,Create_Date,teamName)
这是示例数据http://sqlfiddle.com/#!9/3b678d/1号
3条答案
按热度按时间eqqqjvef1#
我想你不能用
IS NULL IN
空表示我不知道使用空值
任何带null的算术比较的结果也是null,您无法从此类比较中获得任何有意义的结果。
你可以用
+
如果有列,则添加所有列是null
在列中,结果将是null
.0kjbasz62#
直接检查使用
IS NULL
如果三列中的任何一列NULL
:8zzbczxx3#
有办法使用
IN
但你的方式比这更好