【发布时间】:2018-06-26 20:42:32
【问题描述】:
我想编写一个 SQL 查询来调用多个带有条件的列。 表格如下所示。
organisation A B C D
Ikea 2018-04-01 2018-05-07 2018-05-09 2018-05-01
Ikea 2018-06-01 2018-05-03 2018-05-29 2018-07-01
Orange 2018-04-02 2018-05-01 2018-07-08 2018-05-26
Ikea 2018-06-02 2018-05-01 2018-07-08 2018-05-26
Nestle 2018-06-02 2018-05-01 2018-07-08 2018-05-26
Ikea 2018-05-04 2018-05-05 2018-04-02 2018-06-01
我想得到一行,其中组织是宜家,四列(A、B、C、D)中最早的日期在 2018 年 5 月 1 日和 2018 年 5 月 31 日之间。因此,只有上面原始表格的第二第四行符合条件。
所以我想要得到的结果应该是:
organisation A B C D
Ikea 2018-06-01 2018-05-03 2018-05-29 2018-07-01
Ikea 2018-06-02 2018-05-01 2018-07-08 2018-05-26
我应该如何编写 SQL 查询? 这是我的尝试,但它不起作用。
SELECT * FROM myTable
WHERE organisation LIKE Ikea
AND (A >= "2018-05-01" AND A <= "2018-05-31")
OR (B >= "2018-05-01" AND B <= "2018-05-31")
OR (C >= "2018-05-01" AND C <= "2018-05-31")
OR (D >= "2018-05-01" AND D <= "2018-05-31")
编辑:: 现在我意识到我需要处理 NA 值,如果一行包含 NA,我想忽略 NA 并查看其余值中的最早日期。我为此创建了another question,所以请看一下。谢谢你的帮助!
【问题讨论】:
-
AND的优先级通常高于OR,所以您可能需要的是... Ikea AND (... OR ... OR ... OR ...)。否则被视为(... Ikea AND ...) OR ... OR ... OR ...。 -
我认为您的结果将是第 1 行和第 4 行
-
您使用的是哪个DBMS product? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tag
postgresql,oracle,sql-server,db2, ... -
我正在使用 MySQL 服务器。
标签: sql