我有兩個表,第一個(table1)有28500行,另一個(table2)有17450行。 我想比較這些表,發現不存在table1行。在mysql中比較兩個表
SELECT * FROM table1 WHERE ID NOT IN (SELECT DISTINCT(ID) FROM table2)
有什麼建議嗎?
我有兩個表,第一個(table1)有28500行,另一個(table2)有17450行。 我想比較這些表,發現不存在table1行。在mysql中比較兩個表
SELECT * FROM table1 WHERE ID NOT IN (SELECT DISTINCT(ID) FROM table2)
有什麼建議嗎?
試試這個:
SELECT table1.*
FROM table1
LEFT OUTER JOIN table2
ON table1.id = table2.id
WHERE table2.id IS NULL
LEFT OUTER JOIN
連接兩個表table1中被啓動,如果表2沒有聯排表2的所有字段爲空。所以,如果你把你的WHERE
條件table2.id爲空,你只能在表1的行表2中不存在
這是什麼意思SELECT table1。* –
table1的所有字段 –
您可以通過執行左外連接並檢查所有不存在的行來解決此問題。 根據您是否想要查找table1中table1或table2中table1不存在的值,請嘗試以下操作。
SELECT *
FROM table1
LEFT OUTER JOIN table2 ON (table1.id = table2.id)
WHERE table2.id IS NULL;
SELECT *
FROM table2
LEFT OUTER JOIN table1 ON (table1.id = table2.id)
WHERE table2.id IS NULL;
您可能想要使用ON而不是使用... – Mixthos
table2.id = NULL不正確,請在使用NULL值比較字段時使用IS NULL –
非常感謝!我在場上,但語法很模糊。 –
。利用該查詢:
SELECT
*
FROM
table2
LEFT JOIN
table1
ON
table2.primary_key = table1 .primary_key
WHERE
table1 .primary_key IS NULL
;
好,如果你想在回答PHP,那麼這裏就是它:
$sql=mysql_query("SELECT * FROM table1");
while($row=mysql_fetch_array($sql))
{
$id=$row['id'];
$sql2=mysql_query("SELECT * FROM table2 WHERE id='$id'");
$check=mysql_num_rows($sql2);
if($check==0)
{
echo $id." is not in table1<br>";
}
}
我希望這可以幫助您
試試這個:
SELECT id, name
FROM (
SELECT id, name FROM table1
UNION ALL
SELECT id, name FROM table2
) tbl
GROUP BY id, name
HAVING count(*) = 1
ORDER BY id;
假設您有兩個表table1和table2具有相同的列和值。如果任何一個表有任何額外的行,然後使用下面的查詢,你可以得到無與倫比的結果。
你可以發佈你的表結構嗎? –
您的查詢是否無效... –
@ahmadalbayati OP尚未描述OP是否使用PHP。 –