Join
連接具有某些相同值的表
我正在嘗試獲取具有相同 ADAPTERID 和 Attribute_Name 的行,但 Attribute_Value 可以處於活動狀態或自動設計。我用了:
SELECT * FROM database1 where Attribute_Value IN ('ACTIVE','DESIGNED AUTOMATICALLY') and Attribute_Name = 'State' and ADAPTERID = '1277667'
我得到:
ADAPTERID CFS_Name Attribute_Name Attribute_Value 1277667 1277667-Željka State DESIGNED AUTOMATICALLY 1277667 1277667-Željka State DESIGNED AUTOMATICALLY 1277667 1277667-Željka State DESIGNED AUTOMATICALLY 1277667 1277667-Željka State ACTIVE
我怎樣才能得到這些實際上只是不同的:
ADAPTERID CFS_Name Attribute_Name Attribute_Value 1277667 1277667-Željka State DESIGNED AUTOMATICALLY 1277667 1277667-Željka State ACTIVE
謝謝
如果您想查看包含多個值的記錄,
Attribute_Value
那麼您不能簡單地在 a 上使用過濾器,WHERE
因為您想驗證組中的行(aWHERE
將按行過濾,而不是按集合過濾)。嘗試使用
GROUP BY
withHAVING
檢查特定集合的多個值是否存在,然後使用此結果顯示正確的記錄。SELECT D.Attribute_Name, D.ADAPTERID, D.Attribute_Value FROM ( SELECT Attribute_Name, ADAPTERID FROM database1 WHERE Attribute_Value IN ('ACTIVE','DESIGNED AUTOMATICALLY') GROUP BY Attribute_Name, ADAPTERID HAVING COUNT(DISTINCT(Attribute_Value)) > 1 ) Mult INNER JOIN database1 D ON Mult.Attribute_Name = D.Attribute_Name AND Mult.ADAPTERID = D.ADAPTERID
Attribute_Value
如果重複(按Attribute_Name
and ),這仍然會顯示多個相同的記錄ADAPTERID
,然後您可以在DISTINCT
之後添加SELECT
以查看唯一性。如果您只對此值感興趣,您可能還想Attribute_Value
在最外面進行過濾。SELECT
SELECT DISTINCT D.Attribute_Name, D.ADAPTERID, D.Attribute_Value -- ...
此外,將過濾在其中一個或(在大多數數據庫上)
INNER JOIN
具有NULL
值的行。如果您仍想顯示它們,則必須添加檢查函式(語法取決於 DBMS,如SQL Server 或Oracle)。Attribute_Name``ADAPTERID``NULL``ISNULL()``NVL()
嘗試使用 DISTINCT..
SELECT DISTINCT * FROM database1 where Attribute_Value IN ('ACTIVE','DESIGNED AUTOMATICALLY') and Attribute_Name = 'State' and ADAPTERID = '1277667'