php - SQL从一个表中选择不在另一个表中的项目

标签 php mysql sql codeigniter

我有一个带有变量 $lid 的 php 页面和一个带有可变 $uid 的用户...我需要从 2 个表中选择一些数据来填充页面。

        Table 1                          Table 2
¦----------¦----------¦    ¦----------¦----------¦----------¦
¦    qid   ¦    lid   ¦    ¦   owner  ¦   qid    ¦timestamp ¦
¦----------¦----------¦    ¦----------¦----------¦----------¦

我需要编写一个 SQL 语句,从表 2 中获取所有内容,其中 owner = $uid 如果 qid 尚未在具有当前页面的 $lid 的表 1 中列出。

我试过了

SELECT * FROM table_two WHERE qid != (SELECT qid FROM table_one WHERE lid = " . $lid .") AND owner = " . $uid . ";

但没有快乐

有什么想法吗?

最佳答案

这会起作用:

SELECT * 
FROM table_two 
WHERE qid not in (
    SELECT qid 
    FROM table_one 
    WHERE lid = " . $lid .") 

这可能会表现得更好:

SELECT T2.* 
FROM table_two t2
LEFT OUTER JOIN table_one T1 ON T2.QID = T1.QID 
    AND T1.LID = " . $lid ."
WHERE T1.qid IS NULL

关于php - SQL从一个表中选择不在另一个表中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902540/

相关文章:

php - 按键拆分数组

mysql - 在 Rails 应用程序中存储操作列表

mysql - 将 DEFAULT 从 NULL 替换为 0

php - 写入 php ://stderr

php - 遍历用户名的问题

php - 抓取 Soundcloud 图像

mysql - mysql中的内部连接问题

php - 我正在尝试在 codeigniter 中编写 UPDATE 查询,但由于某种原因,它插入了带有默认值的新记录

MySQL:获取约束名称并将其放入一条语句中

SQL - 与同一列中的多个值进行比较?