如何使用SQL UNION

时间:2012-04-11 09:32:21

标签: php sql

我不知道如何正确使用sql union。 我有两个带域名的表(url)我想将table1与table2进行比较,以便从表2中获得不属于表1的唯一域。

例如

table1

id   domain
1    google.com
2    facebook
3    stackoverflow.com

table2

id   domain
1    youtube.com
2    facebook
3    stackoverflow.com

所以我希望我比较两个表并获取youtube.com,因为它不在table1中 我像那样使用sql union

$query="SELECT table1.domain, table2.domain "."FROM table1, table2 "."WHERE table1.domain != table2.domain";
$result = mysql_query($query) or die(mysql_error());
while ($rec = mysql_fetch_array($result))
{
$new_url=$rec["domain"];
}

现在我得到了像youtube.com youtube.com这样的双重结果 所以帮助我的sql语句错误

3 个答案:

答案 0 :(得分:0)

你应该使用

SELECT t2.domain FROM
table2 t2 LEFT JOIN table1 t1
    ON t2.domain = t1.domain
WHERE t1.domain IS NULL

答案 1 :(得分:0)

这是您正在寻找的SQL

SELECT DISTINCT t1.domain FROM t1
WHERE domain not in (SELECT t2.domain FROM t2)

答案 2 :(得分:0)

您需要的关系运算符是差异(union类似于加法)。在标准SQL中,关键字为EXCEPT(在Oracle中为MINUS,这是一个更直观的IMO):

SELECT domain
  FROM table2
EXCEPT 
SELECT domain
  FROM table1

'php'标签是否意味着MySQL? MySQL缺少显式的关系差异运算符,因此您需要使用antijoin构造。