Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql SQL查询设计帮助:在多个表和排除中查找重复项_Mysql_Sql_Database - Fatal编程技术网

Mysql SQL查询设计帮助:在多个表和排除中查找重复项

Mysql SQL查询设计帮助:在多个表和排除中查找重复项,mysql,sql,database,Mysql,Sql,Database,我试图设计一个查询,根据几个字段从两个表中提取重复记录。到目前为止,我已经完成了以下工作: 一些背景: 1这两张表在玩家玩的游戏的“物品”下方标识。物品来自怪物掉落或玩家交易 游戏中的2名玩家由他们的CharID标识 3项主要由以下唯一字段定义:名称、项ID、ID1、ID2、ID3 4每个物品都有其他属性,但这些属性可以根据玩家的行为而改变,例如改变物品的颜色;移动它的位置,升级它 5有两个存储项目的表:ITEM和BANKITEM。物品=袋子;Bankitem=仓库 在某些情况下,玩家可能会意外

我试图设计一个查询,根据几个字段从两个表中提取重复记录。到目前为止,我已经完成了以下工作:

一些背景:

1这两张表在玩家玩的游戏的“物品”下方标识。物品来自怪物掉落或玩家交易

游戏中的2名玩家由他们的CharID标识

3项主要由以下唯一字段定义:名称、项ID、ID1、ID2、ID3

4每个物品都有其他属性,但这些属性可以根据玩家的行为而改变,例如改变物品的颜色;移动它的位置,升级它

5有两个存储项目的表:ITEM和BANKITEM。物品=袋子;Bankitem=仓库

在某些情况下,玩家可能会意外或故意复制单个物品,然后将这些物品交易给其他玩家或用于其他角色

满足所有3个需求非常重要:

1我需要查询同时扫描两个表,以识别具有重复名称、ItemID、ID1、ID2、ID3的项,然后我可以进一步调查并删除其中一个重复项

2我需要查询根据名称排除某些项目,例如,所有红魔都具有相同的名称、ItemID、ID1、ID2和ID3。这些是常见的项目,重复的项目也可以…我不需要将它们包括在列表中,因为它们不是稀有/高价值的项目

3我需要查询以排除为NULL的CharID这是我真正遇到困难的地方,因为CharID不是我的SELECT语句的一部分,而且这不可能,因为两个不同的CharID完全可能有相同的重复项

SQL FIDDLE:

如果查询工作正常,结果应显示:

2个具有以下公共字段的重复ChainHoseM:ChainHoseM,1001708922452,-12225

CharID为“0”的ChainHoseM将从列表中排除。请注意,表中的实际字段为NULL,而不是“0”。我对SQL/SQL Fiddle不太熟悉,不知道如何在SQL Fiddle中将其设置为“NULL”,例如

2使用以下公共字段复制HauberkW:HauberkW、200、12369、15252、95682。颜色和寿命不同并不重要,拥有复制品的玩家可以在获得复制品后染成盔甲。使用本可以缩短寿命

有人有什么建议吗?我以前也问过类似的问题,但没有下定决心。那个人建议我更具体一点,使用SQLFIDLE,所以我这样做是希望我能让它正常工作

提前谢谢。

这就是你需要的吗

SELECT *
from bankitem
where exists(
  SELECT Name, ItemID, ID1, ID2, ID3
  from item
  where bankitem.Name = item.Name
  and bankitem.ItemID = item.ItemID
  and bankitem.ID1 = item.ID1
  and bankitem.ID2 = item.ID2
  and bankitem.ID3 = item.ID3
)
and name not in('RedPotion')
and charid <> 0