mysql - 如何构建具有多个条件的复杂 MySQL 查询

标签 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 查询进行过连接,所以我真的不知道从哪里开始......

问候,斯特凡

最佳答案

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

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/

相关文章:

php - 上个月和下个月的报告

左连接后MYSQL求和不同值

php - 将变量传递给 LESS.js 样式表

mysql - MySQL中的两个不同的数据库

mysql - LEFT JOIN 和 SUM 与 GROUP BY - 所有行的结果相同

java - 根据登录的用户将JSP页面重定向到另一个JSP页面

mysql - #1148 - 此 MariaDB 版本不允许使用命令

mysql - 禁用特定用户/模式的查询缓存?

mysql - 使用git将mysql数据库脚本推送到服务器

php - 如何将Post数组存储到mysql中