我有两个表,名为:
1) 项目
2) 银行元素
项目有以下字段:
ID, CharID, Name, ItemID, Count, Type, ID1, ID2, ID3, Color, Effect1, Effect2, Effect3, LifeSpan, Attribute, Equip, X, Y
Bankitem 具有以下字段:
ID, CharID, Name, ItemID, Count, Type, ID1, ID2, ID3, Color, Effect1, Effect2, Effect3, LifeSpan, Attribute
目标:
我想从这两个具有以下共同字段的表中提取一个单独的列表(即,不仅仅是计数):名称、ItemID、ID1、ID2 和 ID3,以便我可以扫描列表和在删除其中一个之前调查任何重复的条目。根据数据库更新方式的性质,其他每个字段都可能不同。
此外,有时某些记录可能有重复项(同样,基于数据库使用方式的性质)。如果字段“名称”等于我可以设置的排除项之一,是否有一种方法可以在脚本中排除重复项(基于上述字段)?
如有任何帮助,我们将不胜感激。我对 SQL 查询比较陌生 - 我知道我想做什么,但真的不知道如何进行下一步。
谢谢。
最佳答案
SELECT Name, ItemID, ID1, ID2,ID3 FROM item
UNION ALL
SELECT Name, ItemID, ID1, ID2,ID3 FROM bankitem
或者如果您不想重复,请使用 UNION。如果您不想在表中重复,只需对该列使用唯一索引即可。
SELECT * FROM(SELECT Name, ItemID, ID1, ID2, ID3, count(*) no_of_records FROM item
UNION
SELECT Name, ItemID, ID1, ID2, ID3, count(*) no_of_records FROM bankitem
GROUP BY Name, ItemID, ID1, ID2, ID3 HAVING count(*) > 1)as x
WHERE x.Name != 'RedPotion'
或者
WHERE x.Name NOT IN('blah1','blah2')
关于mysql - Advanced SQL Query Design Help(跨两个表重复,多个字段,基于一个字段可能排除),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20164449/