簡體   English   中英

先進的SQL查詢設計說明(跨兩個表,多個域重復,可以排除基於一個字段)

[英]Advanced SQL Query Design Help (Duplicates across two tables, multiple fields, possible exclusions based on one field)

我有兩個表,名為:

1)項目

2)bankitem

物料具有以下字段:

ID,CharID,名稱,ItemID,計數,類型,ID1,ID2,ID3,顏色,Effect1,Effect2,Effect3,LifeSpan,屬性,Equip,X,Y

Bankitem具有以下字段:

ID,CharID,名稱,ItemID,計數,類型,ID1,ID2,ID3,顏色,Effect1,Effect2,Effect3,LifeSpan,屬性

目的:

我想從這兩個具有以下共同字段的表中拉出一個單獨的列表(即,不只是一個計數):名稱,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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM