【问题标题】:MySQL join with 3 tables trickMySQL join 与 3 个表技巧
【发布时间】:2012-02-12 07:55:58
【问题描述】:

我不能得到我想要的结果,我解释一下:

我有两张桌子:

  • 类别
  • 项目

在它们之间还有另一个建立链接的表格:

  • ASSIGNED_CAT 包含 2 列:PROJECT_IDCATEGORY_ID

ASSIGNED_CAT 中,我将CATEGORIESPROJECTS 的ID 链接在一起。


现在我需要获取包含 PROJECTS 的 CATEGORIES,如果没有,请不要显示它们。

示例:
如果 CATEGORY 1 有项目,则显示 CATEGORY NAME,如果没有,则不显示。

有什么办法欺骗这个吗?我尝试了很多 SQL JOIN 都没有成功。

【问题讨论】:

    标签: mysql sql join


    【解决方案1】:

    我猜你错过了EXISTS 子句。

    以下查询选择交集表中至少存在一行的所有类别。

    SELECT category_name
    FROM categories c
    WHERE EXISTS (
        SELECT 1
        FROM assigned_cat ac
        WHERE ac.category_id = c.category_id
    )
    

    【讨论】:

    • @FahimParkar:它将选择一列具有常量值1。当使用EXISTS 子句时,只有行数是相关的,所以你也可以SELECT *SELECT ac.category_id
    • 感谢分享信息... :)
    • 实际上它并没有真正选择任何东西,它甚至不会评估您要选择的内容。您可以通过执行 where exists ( select 1/0 from .... where ... ) 来引发“错误”
    猜你喜欢
    • 2012-06-17
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-20
    相关资源
    最近更新 更多