2013-05-08 86 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