2013-05-08 68 views
2

我有一個表,它包含鏈接。因此,其中包含2列包含網址;來源和目的地。 我需要獲取表中存在的所有唯一URL的列表(創建查找表),但URL當然可以在兩列中。在2列上使用不同值似乎會返回唯一的組合,而不是單個值。我可以在1個查詢中做到這一點,或者我應該使用2(每列一個),然後在該結果上使用3d獨立選擇?MySQL從2列中選擇不同的值

+0

你可以給樣品記錄? – 2013-05-08 08:56:48

+1

我想你需要使用'GROUP BY'。 – 2013-05-08 08:58:33

+0

後續問題:當我有查找表時,如何獲得第一個表中存在的這些值的唯一組合? 所以基本上ID的從查找表上的2列... – Chrisvdberge 2013-05-08 09:09:18

回答

5

您可以使用UNION,這將刪除重複的(而UNION ALL將保留副本)

SELECT FirstUrlColumn AS url 
FROM myTable 
UNION 
SELECT secondUrlColumn AS url 
FROM myTable 
+0

上的方式來檢查輸出的建議的DISTINCT查詢?它給了我與第二列的不同查詢完全相同的行數。當然這可能是正確的,但可以肯定。 – Chrisvdberge 2013-05-08 09:07:31

+1

好吧,如果你不信任你的RDBMS,這是一個問題;)你可以手動檢查你的一小部分數據,但是,UNION確實......它該做什麼!也許顯示你的查詢,如果你選擇更多的領域不只是網址。 – 2013-05-08 09:11:59

+0

@Chrisvdberge您可以嘗試與UNION ALL,看你是否發現差異,但... – 2013-05-08 09:13:04

2

嘗試以下操作:

SELECT DISTINCT url 
FROM (
    SELECT col1 AS url 
    FROM TABLE 
    UNION 
    SELECT col2 AS url 
    FROM TABLE 
) urls 
+4

不需要在聯合查詢上選擇不同。聯盟將刪除重複項! – 2013-05-08 08:59:39