我想查询数据库以返回任何行,该行匹配3列中可能值列表中的值。这可能吗?
我的表格包含以下列:id,ans1,ans2,ans3
这是我对查询的尝试:
SELECT *
FROM table
WHERE
ans1 IN ("Yes", "No", "Maybe") OR
ans2 IN ("Yes", "No", "Maybe") OR
ans3 IN ("Yes", "No", "Maybe");
3列可以都是 null ,如果它包含 one 中列表("Yes","No","Maybe)
中的值,我只想返回一行(或者更多)的列。查询成功执行(没有语法错误),但仅返回所有列中存在值的行。
例如:
INSERT INTO table
(ans1,ans2,ans3)
VALUES
("Yes","No","Maybe"),
(null,"Yes",null),
(null,null,"Yes");
我希望查询返回所有3行,但它只返回第1行,因为每列都包含匹配值。
答案 0 :(得分:1)
这不是一个答案,但是评论太长了。
您的查询应该完全按照您希望的方式工作。
以下是您的查询示例,包含您的数据,执行您希望它执行的操作。
那么问题是什么?
mysql> create table your_table (
-> ans1 varchar(10) null,
-> ans2 varchar(10) null,
-> ans3 varchar(10) null
-> );
Query OK, 0 rows affected (0.13 sec)
mysql>
mysql> INSERT INTO your_table (ans1,ans2,ans3) VALUES ('Yes','No','Maybe'),(null,'Yes',null),(null,null,'Yes');
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql>
mysql> SELECT *
-> FROM your_table
-> WHERE
-> ans1 IN ('Yes', 'No', 'Maybe') OR
-> ans2 IN ('Yes', 'No', 'Maybe') OR
-> ans3 IN ('Yes', 'No', 'Maybe');
+------+------+-------+
| ans1 | ans2 | ans3 |
+------+------+-------+
| Yes | No | Maybe |
| NULL | Yes | NULL |
| NULL | NULL | Yes |
+------+------+-------+
3 rows in set (0.00 sec)
答案 1 :(得分:0)
如果选项为“是”,“否”,“可能”和NULL,则此查询应该有效:
SELECT *
FROM table
WHERE ans1 IS NOT NULL
OR ans2 IS NOT NULL
OR ans3 IS NOT NULL