php - 查询以获取列的差异

标签 php mysql join

我有两个表,主键为“poll_id”,每个表中的列名为“object_id”。 我无法从 t1 获取 t2 中不存在的对象,并且带有 poll_id(主键)。

       T1                           T2

poll_id|object_id            poll_id|object_id
1      | 2                    1     |  2
1      | 3                          |

我需要获取 [poll_id]=>1,[object_id]=>3

最佳答案

使用NOT EXISTS

SELECT poll_id, object_id
FROM t1
WHERE NOT EXISTS
      ( SELECT *
        FROM t2
        WHERE t2.poll_id = t1.poll_id
          AND t2.object_id = t1.object_id
      ) 
  AND poll_id = 1 ;                        -- additional requirement

使用LEFT JOIN/IS NULL

SELECT t1.poll_id, t1.object_id
FROM t1
  LEFT JOIN t2
    ON  t2.poll_id = t1.poll_id
    AND t2.object_id = t1.object_id
WHERE t2.object_id IS NULL 
  AND t1.poll_id = 1 ;                        -- additional requirement

使用NOT IN:

SELECT poll_id, object_id
FROM t1
WHERE (poll_id, object_id) NOT IN
      ( SELECT poll_id, object_id
        FROM t2
      ) 
  AND poll_id = 1 ;                        -- additional requirement

关于php - 查询以获取列的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11886276/

相关文章:

mysql - 优化Mysql索引多表JOIN

php - 如何增加php中的最大执行时间

javascript - 使用 javascript 和下拉菜单更改多个 textareas css 值?

php - 如果用户名和密码正确,则开始 session

php - NULL 分配给 mysql_fetch_array 输出?

Java:如果加入线程不起作用:中断还是继续?

mysql - 子查询 - W3Resources

php - 协助 MySQL 左外连接并区分同一键的查询结果

PHP数组比较

php - 显示通知:未定义属性:wpdb::$insertid in D:\wamp\www\wordpress-4.7.1\wordpress\wp-includes\wp-db.php 第 684 行