如何使用多个条件构造复杂的MySQL查询

时间:2019-04-05 13:03:10

标签: mysql

我需要做的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查询进行联接,所以我真的不知道从哪里开始...

关于,斯蒂芬

2 个答案:

答案 0 :(得分:0)

如果我正确,此查询将为您提供帮助。

SELECT
    jobunique,
    jobtypeunique ,
    joblat ,
    joblng
FROM job
WHERE
    jobpayed != 0 
    AND 
    (
        jobbusiness = 1 AND jobstartdate > NOW() AND jobenddate <= NOW()
    ) OR
    ( 
        jobbusiness = 0 AND jobfixedstartdate = 0 AND jobfixedenddate = 0 AND jobcreatedtimestamp <= (NOW()-INTERVAL 60 DAY) 
    ) OR
    (
        jobbusiness = 0 AND jobfixedstartdate = 1 AND jobfixedenddate = 0 AND jobstartdate >= NOW()
    ) OR
    (
        jobbusiness = 0 AND jobfixedstartdate = 1 AND jobfixedenddate = 1 AND jobenddate >= NOW()
    )

我最好的。

答案 1 :(得分:0)

这是解决此查询的一种方法

exists()