选择等于其他表的id的名称 - SQL

时间:2018-05-05 09:24:43

标签: mysql sql

我有两个表产品和类别。对于我有ff字段的产品:

  • ID
  • PNAME
  • CATEGORY_ID
  • 日期

对于我的cateogries id:

  • ID
  • 名称

因此,使用内部联接我试图选择与products表中的category_id相等的所有类别的名称。

这是我的看法:

SELECT
    c.name
FROM
    categories AS c
    INNER JOIN products AS p ON c.id = p.category_id

然而,这个没有成功,它只是给我一个空阵列。

知道我该怎么办?谢谢!

1 个答案:

答案 0 :(得分:2)

如果您只想要类别名称,那么existsinjoin更合适:

SELECT c.name
FROM categories c
WHERE EXISTS (SELECT 1 FROM products p WHERE c.id = p.category_id);

除非两个类别具有相同的名称,否则您不必担心删除重复项。

这比在查询中使用SELECT DISTINCT更有效率,尤其是products的索引category_id是第一个键时。