我有以下表格和值
name dob doj sex salary
dev 1989-01-01 2012-01-01 m 1200
anish 1989-07-14 1995-01-01 m 5000
aasha 1988-12-15 2009-06-05 f 5000
我需要关注输出。
name dob doj sex salary
anish 1989-07-14 1995-01-01 m 5000
aasha 1988-12-15 2009-06-05 f 5000
我需要选择获得相同金额
的人的详细信息答案 0 :(得分:1)
您可以将行限制为用户,以便存在获得相同金额的其他用户,如下所示:
SELECT *
FROM person p1
WHERE EXISTS (
SELECT *
FROM person p2
WHERE p1.salary=p2.salary -- Has the same salary
AND (p1.name <> p2.name -- But is not the same person
OR p1.dob <> p2.dob
OR p1.doj <> p2.doj
OR p1.sex <> p2.sex
)
)
添加主键可以简化查询,因为p1.pk <> p2.pk
检查就足够了。
答案 1 :(得分:1)
你可以用2个查询来做到这一点。内部查询选择2个或更多人拥有的所有工资。
SELECT
name,
dob,
doj,
sex,
t.salary
FROM
table AS t
INNER JOIN (SELECT
salary
FROM
table
GROUP BY
salary
HAVING
COUNT(*) > 1) AS s
USING (salary)