高级SQL查询设计帮助(跨两个表复制,多个字段,基于一个字段的可能排除)

时间:2013-11-23 15:57:26

标签: mysql sql

我有两个表,名为:

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查询比较陌生 - 我知道我想做什么,但我真的迷失了如何进入下一步。

感谢。

1 个答案:

答案 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')