【问题标题】:How do I select only rows that don't have a corresponding foreign key in another table in MySQL?如何在 MySQL 的另一个表中仅选择没有相应外键的行?
【发布时间】:2010-06-21 01:22:23
【问题描述】:

我有 3 张桌子:

  • 上市
  • 照片
  • 日历

“照片”和“日历”都有一个“listing_id”列,每个“列表”都有一个“照片”。但我只想选择“日历”表中没有匹配“listing_id”的行。

我不确定我说的是否正确,但我们将不胜感激。如果有人可以向我展示 CodeIgniter 的语法,那就更好了。

【问题讨论】:

  • 等等..让我澄清一下。 “日历”有一个“free_date”列,我希望能够指定不应返回的“free_date”。

标签: codeigniter mysql join


【解决方案1】:

这将生成不应该返回的 calendar.free_date 值列表,因为它们关联的 listing_id 值在列表表中不存在。

select free_date from calendar c 
 where not exists (select * from listing 
                    where listing_id = c.listing_id);

【讨论】:

    【解决方案2】:

    应该作为 SQL 查询工作。不确定 CI 语法。对不起!

    SELECT * FROM Listing WHERE listing_id NOT IN (SELECT listing_id FROM calendar)

    【讨论】:

    • 我无法直接回复您的评论,但我不太了解 free_dates 的来源。您是否正在从“日历”表中寻找关于有什么或没有什么的结果?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2014-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多