[英]How to query mysql to select rows with non unique combination of two columns
[英]Select unique rows in mysql query
我有疑问
SELECT DISTINCT employer.id, employer.name
FROM employers
LEFT JOIN positions ON positions.id = employers.id
LEFT JOIN statuses ON statuses.position = positions.some
WHERE statuses.number = 2
而且事情是有些,我需要雇主提供独特的记录,但我却重复了,因为statuss.number确实像222 6 777这样重复,所以我只需要抓住它们一次。 我不想使用DISTINCT还有其他方法吗?
使用GROUP BY语句
SELECT employer.id, employer.name
FROM employers
LEFT JOIN positions ON positions.id = employers.id
LEFT JOIN statuses ON statuses.position = positions.some
WHERE statuses.number = 2 GROUP BY employer.id
在雇主ID上使用GROUP BY,对于返回的每一行,您只会获得一个雇主记录:
SELECT employer.id, employer.name
FROM employers
LEFT JOIN positions ON positions.id = employers.id
LEFT JOIN statuses ON statuses.position = positions.some
WHERE statuses.number = 2
GROUP BY employer.id
首先,每当您在WHERE子句中引用LEFT JOINed列(如statuses.number =2
,都将否定LEFT并强制其表现为INNER。
第二,试试这个版本:
SELECT e.id, e.name
FROM employers e
WHERE EXISTS(SELECT 1
FROM positions p
INNER JOIN statuses s
ON p.some = s.position
WHERE p.id = e.id
AND s.number = 2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.