我有这张桌子:
name dob
Avash 1991-07-23
Bipin 1990-03-25
Bijay 1990-03-25
我如何获取具有相同工作权限的员工列表?
答案 0 :(得分:3)
您可以尝试这样的事情
SELECT * FROM table WHERE dob IN (
SELECT dob
FROM table
HAVING COUNT(dob) > 1
GROUP BY dob
)
子查询查找所有出现多次的dob值,然后只需选择与这些dob匹配的所有名称即可。
答案 1 :(得分:1)
如果RDBMS支持窗口功能,则为一个选项:
SELECT *
FROM (
SELECT name, dob, count(*) OVER (PARTITION BY dob) as dobcount
FROM yourtable
) sub
WHERE sub.dobcount > 1
这将为您提供与@daniel的非常正确答案相似的答案。
答案 2 :(得分:0)
SELECT tbl1.name
,tbl2.name
FROM table tbl1
,table tbl2
WHERE tbl1.dob = tbl2.dob
AND tbl1.name < tbl2.name
答案 3 :(得分:0)
我会做这样的事情...
CREATE TABLE #stuff (first_name varchar(15), dob date);
INSERT INTO #stuff (first_name, dob)
VALUES ('Avash', '1991-07-23')
, ('Bipin', '1990-03-25')
, ('Bijay', '1990-03-25')
, ('Mike', '2010-12-01')
, ('Dick', '2010-12-01')
, ('Kavitha', '1992-03-25');
SELECT s.[first_name]
, s.dob
FROM #stuff s
WHERE EXISTS (
SELECT dob
FROM #stuff
WHERE dob = s.dob
GROUP BY dob
HAVING COUNT(*) > 1
);
这就是你得到的...