mysql - Advanced SQL Query Design Help(跨两个表重复,多个字段,基于一个字段可能排除)

标签 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

目标:

我想从这两个具有以下共同字段的表中提取一个单独的列表(即,不仅仅是计数):名称、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/

相关文章:

java - JPA 返回对象引发内部服务器错误

mysql select join 与 2 个不同的 ORDER BY

C# 如何使 foreach 循环不覆盖字符串变量

MySQL select - 如果匹配同一列中的 2 个值,则返回值

mysql - 如何先根据关键词排序?

php - mysql关于html和php的问题

c# - 在集合中找不到参数 'daterange'

c# - SQL:保存 MIME 类型或扩展名?

sql - 如何防止 SQL Server 对扫描的行数进行平方?

sql - 使用 Npgsql 的 PostgreSQL Master Details 事务处理