我有一组以下格式的MySQL数据:
acode bcode unique_code
BA1100018 SE OX120013
BE1100001 CS CS140005
BE1100001 SE SE140079
CS1400000 CS CS140006
CS1400000 CS CS140011
CS1400000 CS CS140009
CS1400000 CS CS140013
OX1100021 OX OX110010
OX1100021 SE OX110013
OX1100021 OX OX980141
我正在尝试识别哪个acode id具有多个不同的bcode id。我想返回一组数据,用于过滤掉不相关的数据。在这种情况下,数据将按如下方式返回:
acode bcode unique_code
BE1100001 CS CS140005
BE1100001 SE SE140079
OX1100021 OX OX110010
OX1100021 SE OX110013
OX1100021 OX OX980141
我最初的尝试是:
select count(bcode),acode from mydataset group by acode having
count(bcode)>1
我意识到这不会让我回到bcodes,所以我尝试了各种各样的排列。没有太大的成功。我一直在尝试尽可能高效地完成这项工作,因为我正在处理大型数据集,但是在维护我需要的细节的同时,我在使用聚合技术时遇到了困难。有人能帮忙吗?感谢
答案 0 :(得分:0)
如果你告诉我们你尝试了什么,那就更好了。
SELECT acode,bcode,count(bcode)
FROM mydataset
GROUP BY acode,bcode
如果您只想要那些超过1
的那些SELECT acode,bcode,count(bcode) as num
FROM mydataset
GROUP BY acode,bcode
HAVING num>1
答案 1 :(得分:0)
SELECT DISTINCT x.*
FROM my_table x
JOIN my_table y
ON y.acode = x.acode
AND y.bcode <> x.bcode;
答案 2 :(得分:0)
这对你有用
SELECT main.bcode, main.acode FROM mydataset main
INNER JOIN (SELECT acode, count(DISTINCT bcode) AS cnt FROM mydataset GROUP BY acode HAVING cnt>1) AS sub
ON main.acode=sub.acode