表1
ID class 1 A 2 A 3 B 4 C
表2
ID class 1 A 3 B 4 C
嗨,有没有比较每个表的计数(类)的简单方法,如果2个表具有相同的计数,则返回ID和类。
想要获得以下结果:
ID class 3 B 4 C
答案 0 :(得分:1)
一种方法是:
SELECT t1.ID, t1.Class
FROM Table1 t1
JOIN
(
SELECT Class, COUNT(*) AS NumberOf
FROM Table1
GROUP BY Class
) x1 ON t1.Class = x1.Class
JOIN
(
SELECT Class, COUNT(*) AS NumberOf
FROM Table2
GROUP BY Class
) x2 ON x1.Class=x2.Class AND x1.NumberOf = x2.NumberOf
编辑,因为我原来误解了!我已经随意返回了Table1中的ID,其中给定类的编号在两个表中都匹配
答案 1 :(得分:1)
SELECT
tbl1.class
FROM
(SELECT class, count(1) as cnt FROM table1 GROUP BY class) tbl1,
JOIN (SELECT class, count(1) as cnt FROM table2 GROUP BY class) tbl2 ON tbl1.class=tbl2.class
WHERE
tbl1.cnt=tbl2.cnt
您将无法获取ID,因为如果B或C类有更多ID,则数据库引擎将不知道要选择哪个ID。一旦您知道自己需要什么,就必须编写更复杂的查询。
答案 2 :(得分:0)
试试这个:
SELECT CLASS, ID
FROM TABLE1
WHERE CLASS IN
(SELECT CLASS FROM
(SELECT * FROM
(SELECT CLASS, COUNT(*) AS class_count
FROM table1
GROUP BY CLASS) T1
INNER JOIN
(SELECT CLASS, COUNT(*) AS class_count
FROM table2
GROUP BY CLASS) T2
USING (CLASS, CLASS_COUNT)));
这将从TABLE1返回ID和CLASS,并用于提供的测试数据。不保证适用于所有可能的数据组合。使用风险由您自己承担。不得用于医疗设备,空中交通管制系统或其他涉及严重伤害,死亡或责任风险的应用。你的旅费可能会改变。 16岁以下儿童的使用应由负责任的成年人监督。不要在强磁场,强风或青蛙或其他小型两栖动物的雨中使用。不鼓励在大型两栖动物或食肉爬行动物存在的情况下使用。没有在动物身上测试过 - 你会成为第一个!
分享并享受。
答案 3 :(得分:0)
您可以使用新条款INTERSECT来获取它。
有关此新条款的详细信息,请查看此帖: