我有两个表,名为:
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
目的:
我想从这两个具有以下共同字段的表中提取单个列表(即,不仅仅是计数):Name,ItemID,ID1,ID2和ID3,以便我可以扫描列表和在删除其中一个条目之前,调查任何重复的条目。根据数据库更新的性质,每个其他字段可能会有所不同。
此外,有时可能会有某些记录可以重复(同样,基于数据库使用方式的性质)。如果“名称”字段等于我可以设置的排除项之一,是否有办法构建到脚本中以排除重复项(基于上述字段)?
非常感谢任何帮助。我对SQL查询比较陌生 - 我知道我想做什么,但我真的迷失了如何进入下一步。
感谢。
答案 0 :(得分:0)
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')