我不知道如何正确使用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语句错误
答案 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构造。