首页 > 解决方案 > 如何构造具有多个条件的复杂 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"

首先,我不需要输入where "jobpayed"is "0"

我需要所有条目在哪里"jobbusiness"并且"1"通过"jobstartdate""jobenddate"不是。当前日期必须在"jobstartdate"和之间"jobenddate"

我需要所有条目,其中“jobfixedstartdate”和“jobfixedenddate”"jobbusiness"为“0”,如第 3 行,其中不超过 60 天。"0""0""jobcreatedtimestamp"

我需要所有条目 where "jobbusiness"is "0", "jobfixedstartdate"is"1""jobfixedenddate"is"0"就像在第 4 行,其中 the"jobstartdate"不早于当前日期。

我需要所有条目 where "jobbusiness"is "0", "jobfixedstartdate"is"1""jobfixedenddate"is"1"就像第 5 行一样,其中 the"jobenddate"不早于当前日期。

我从来没有对 MySQL 查询进行过连接,所以我真的不知道从哪里开始......

问候,斯特凡

标签: mysql

解决方案


如果我得到它正确这个查询帮助你。

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()
    )

我最好的。


推荐阅读