mysql - 如果表中多次出现相同的名称,并且某个列有 2 种不同类型的数据,则不要选择任何具有该名称的行

标签 mysql

我有这个查询

SELECT DISTINCT visitors_table.name, visitors_table.visitor_submitted 
FROM visitors_table 
LEFT JOIN list_data 
ON visitors_table.vid = list_data.id 
WHERE visitors_table.cid='2050' AND list_data.seed != '1'

结果是这样的

aaron 0000-00-00 00:00:00
brandon 2016-05-24 09:48:27
will 0000-00-00 00:00:00
amy 0000-00-00 00:00:00
amy 2016-05-24 17:14:27
amy 2016-05-24 17:20:00

我想选择日期等于 0000-00-00 00:00:00 的所有记录,但如果该人有另一条日期不全为零的记录,那么我不想选择该人。

所以我可以做到这一点

SELECT DISTINCT visitors_table.name, visitors_table.visitor_submitted 
FROM visitors_table 
LEFT JOIN list_data 
ON visitors_table.vid = list_data.id 
WHERE visitors_table.cid='2050' AND list_data.seed != '1' AND visitors_table.visitor_submitted='0000-00-00 00:00:00'

但这给出了这个结果

aaron 0000-00-00 00:00:00
will 0000-00-00 00:00:00
amy 0000-00-00 00:00:00

这不是我想要的结果。我想要这个结果,因为艾米有多个带有和不带有零日期的条目。

aaron 0000-00-00 00:00:00
will 0000-00-00 00:00:00

你会怎么做?

最佳答案

首先,获取日期等于 0000-00-00 00:00:00 的所有日期,然后过滤掉日期不是 0000-00-00 00:00 的日期:00

SELECT DISTINCT visitors_table.name, visitors_table.visitor_submitted   
FROM visitors_table 
LEFT JOIN list_data 
ON visitors_table.vid = list_data.id 
WHERE visitors_table.cid='2050' AND list_data.seed != '1' AND visitors_table.visitor_submitted = '0000-00-00 00:00:00'
and visitors_table.name not in 
(SELECT DISTINCT visitors_table.name 
FROM visitors_table 
LEFT JOIN list_data 
ON visitors_table.vid = list_data.id 
WHERE visitors_table.cid='2050' AND list_data.seed != '1' AND visitors_table.visitor_submitted <> '0000-00-00 00:00:00')

如果您没有适当的索引并且查询对您来说太慢,您可以通过连接等以不同的方式执行相同的操作

关于mysql - 如果表中多次出现相同的名称,并且某个列有 2 种不同类型的数据,则不要选择任何具有该名称的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37448793/

相关文章:

python - 将 NULL 值插入 double 据类型 MySQL Python

mysql - SHOW PROCESSLIST 仅显示 20 个连接,而服务器表示 "has more than ' max_user_connections 的事件连接”

Mysql获取小于且等于小于其他字段的数据

mysql - SQL按日期过滤器获取记录

mysql - LIMIT 是在 JOIN 之前还是之后生效?

python - 如何从 Python REST API 返回 JSON

javascript - 当用户喜欢我嵌入我网站的页面时,一些功能应该调用

c# - 无法连接到托管计算机上的 Mysql 数据库

php - 如何在php mysql上设置主备数据库

php - 在网页上显示 MySQL BLOB 图像,无需单独的脚本 (PHP)