Mysql - 在表1中的两个表之间显示不相关的结果

时间:2011-08-09 19:49:55

标签: sql join

我有2张桌子:

表A:

pid|filename|date
-----------------
1  |file1   |2009
2  |file2   |2009
3  |file3   |2009
4  |file4   |2009

表B:

pid|filename
------------
1  |filex1
1  |filex2
2  |filex3
2  |filex4

我想得到的结果是:

pid|filename|date
-----------------
3  |file3   |2009
4  |file4   |2009

这意味着它应该只向我显示与第二个表没有关系的表A的行。

我从这段代码开始,但它没有用!

$do_q=mysql_query("SELECT *
  FROM A LEFT JOIN B
         ON (A.pid <> B.pid)");
    while($row = mysql_fetch_array($do_q)){
        echo $row['pid'];
        echo $row['filename'];
        echo $row['date'];
    }

谢谢。

3 个答案:

答案 0 :(得分:1)

SELECT A.*
    FROM A
        LEFT JOIN B
            ON A.pid = B.pid
    WHERE b.pid IS NULL

答案 1 :(得分:0)

我认为这应该适合你:

SELECT * 
FROM A
WHERE pid NOT IN (SELECT pid from B)

答案 2 :(得分:0)

SELECT
 *
FROM tableA A
WHERE(NOT EXISTS(SELECT 1 FROM tableB B WHERE B.pid = A.pid))