我的认知能力和 MySQL 技能已经达到了我需要执行的 MySQL 查询的极限,我正在寻求一些帮助。
我的“工作”表如下所示:
| jobunique | jobtypeunique | joblat | joblng | jobbusiness | jobpayed | jobfixedstartdate | jobstartdate | jobfixedenddate | jobenddate | jobcreatedtimestamp
| 1 | 4 | 23.99 | 18.34 | 1 | 1 | 0 | 2019-04-06 | 0 | 2019-05-11 | 2019-04-05 12:22:02
| 2 | 2 | 31.34 | 11.89 | 1 | 0 | 0 | 2019-03-02 | 0 | 2019-04-01 | 2019-04-05 12:23:21
| 3 | 7 | 42.31 | 14.34 | 0 | 1 | 0 | 0000-00-00 | 0 | 0000-00-00 | 2019-04-05 12:23:44
| 4 | 7 | 60.99 | 55.67 | 0 | 1 | 1 | 2019-04-06 | 0 | 0000-00-00 | 2019-04-05 12:26:14
| 5 | 7 | 11.10 | 12.00 | 0 | 1 | 1 | 2019-05-06 | 1 | 2019-05-10 | 2019-04-05 12:27:10
我需要进行mysql查询,获取"jobunique"
的信息, "jobtypeunique"
, "joblat"
, "joblng"
符合以下条件的所有条目:
首先,我不需要条目 "jobpayed"
是 "0"
.
我需要 "jobbusiness"
处的所有条目是 "1"
和 "jobstartdate"
已通过,但"jobenddate"
不是。当前日期必须介于 "jobstartdate"
之间和 "jobenddate"
。
我需要 "jobbusiness"
处的所有条目是 "0"
,“jobfixedstartdate”是 "0"
并且“jobfixedenddate”是“0”,如第 3 行所示,其中 "jobcreatedtimestamp"
不超过 60 天。
我需要 "jobbusiness"
处的所有条目是 "0"
, "jobfixedstartdate"
是 "1"
和"jobfixedenddate"
是 "0"
就像第 4 行一样,其中 "jobstartdate"
不早于当前日期。
我需要 "jobbusiness"
处的所有条目是 "0"
, "jobfixedstartdate"
是 "1"
和"jobfixedenddate"
是 "1"
就像第 5 行一样,其中 "jobenddate"
不早于当前日期。
我从未对 MySQL 查询进行过连接,所以我真的不知道从哪里开始......
问候,斯特凡
最佳答案
这是解决此查询的一种方法
SELECT * FROM
job
WHERE
1= (CASE WHEN jobbusiness=1 AND (jobstartdate >= jobenddate AND NOW() >= jobstartdate) THEN 1
CASE WHEN jobbusiness=0 AND jobfixedstartdate=0 AND jobfixedenddate=0 AND date_diff(NOW(),jobcreatedtimestamp)>60 THEN 1
CASE WHEN jobbusiness=0 AND jobfixedstartdate=1 AND jobfixedenddate=0 AND jobstartdate>= NOW() THEN 1
CASE WHEN jobbusiness=0 AND jobfixedstartdate=1 AND jobfixedenddate=1 AND jobenddate>=NOW() THEN 1
ELSE 0
END)
关于mysql - 如何构建具有多个条件的复杂 MySQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536047/