MySQL - 选择不存在的地方(里面的代码)

Posted

技术标签:

【中文标题】MySQL - 选择不存在的地方(里面的代码)【英文标题】:MySQL - Select WHERE NOT EXITS (code inside) 【发布时间】:2015-02-12 19:20:58 【问题描述】:

谁能告诉我我做错了什么?

我想要来自客户 INNER JOIN clientes.id = sat.clientid 的所有 sat 表和 id、cliente、direccion、telefono,但如果这些字段在 2015 年和 02 月不存在,我只想要这些字段。

嗯,在坐席上,我有帮助票,他们的描述......我想知道这个月和今年我没有访问过哪些“id”。

**抱歉是英文,谢谢

<i> 
SELECT sat.*, clientes.id, clientes.cliente, clientes.direccion, clientes.telefono FROM sat INNER JOIN clientes ON sat.clientid = clientes.id WHERE not exits 
(SELECT sat.*, clientes.cliente 
        FROM sat INNER JOIN clientes ON sat.clientid = clientes.id
        WHERE YEAR(sat.fecha_trabajo)='2015' AND MONTH(sat.fecha_trabajo)='02'
) 

</i>

【问题讨论】:

sat.fecha_trabajo 是什么样的?它是 varchar 还是日期字段? 这只是一个简单的错字(WHERE NOT EXITS 而不是WHERE NOT EXISTS)吗? 【参考方案1】:

我不知道“sat”到底代表什么,但这里有一个猜测:

SELECT sat.*, clientes.id, clientes.cliente, clientes.direccion, 
clientes.telefono FROM sat INNER JOIN clientes ON sat.clientid = clientes.id 
WHERE not exits 
(SELECT * 
    FROM sat LEFT JOIN clientes ON sat.clientid = clientes.id
    WHERE sat.fecha_trabajo BETWEEN '2015-02-01' AND '2015-02-28'
) 

【讨论】:

【参考方案2】:

我只是打错了“存在”。

但是,我还有一个问题。我在 mysql 控制台中执行此操作,但它不起作用。如果您使用 YEAR(fecha_trabajo)=YEAR('2015-02-01') 效果很好!但是命令 MONTH 不起作用,我正在网站的另一个部分使用它。

错误 1064。我刚刚下载了带有最新 php 版本的 XAAMP。

SELECT sat.*, clientes.cliente 
    FROM sat INNER JOIN clientes ON sat.clientid = clientes.id
    WHERE MONTH(fecha_trabajo)= MONTH('2015-02-01') 

【讨论】:

以上是关于MySQL - 选择不存在的地方(里面的代码)的主要内容,如果未能解决你的问题,请参考以下文章

错误与异常_2-10选择题

设置浏览器不存缓存

如何使用mysql中存在或不存在的地方实现相交

MySQL - 在不存在的地方插入 [重复]

docker mysql数据会保存下来吗

有条件的 INSERT INTO MySQL - 不存在的地方