Mysql 选择与其他表的id相同的名称-SQL

Mysql 选择与其他表的id相同的名称-SQL,mysql,sql,Mysql,Sql,我有两个产品和类别表。对于产品,我有ff字段: 身份证 pname 类别识别码 日期 对于Categories id,我有: 身份证 名字 因此,使用内部联接,我试图选择与products表中的category_id相等的所有类别名称 以下是我的看法: SELECT c.name FROM categories AS c INNER JOIN products AS p ON c.id = p.category_id 然而,这一个没有工作,它只是给我发送了一个空

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

  • 身份证
  • pname
  • 类别识别码
  • 日期
对于Categories id,我有:

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

以下是我的看法:

SELECT
    c.name
FROM
    categories AS c
    INNER JOIN products AS p ON c.id = p.category_id
然而,这一个没有工作,它只是给我发送了一个空数组


你知道我该怎么做吗?谢谢

如果您只需要类别名称,则
存在
中比
加入
更合适:

SELECT c.name
FROM categories c
WHERE EXISTS (SELECT 1 FROM products p WHERE c.id = p.category_id);
您不必担心消除重复项,除非两个类别具有相同的名称


这也比在查询中使用
SELECT DISTINCT
更有效,特别是如果
产品
有一个索引,其中
类别id
是第一个键。

当您有表
产品
类别
…那么为什么要从
预算(u)类别
交易
。。。但是,由于您没有得到错误,而是得到一个空的结果列表,因此我假设表甚至列名都是有效的/存在的,并且没有数据与条件匹配。(您是否选择/加入正确/所需的表?)您的问题询问的是
产品
类别
——但您的SQL是关于
预算_类别
交易
。请改写您的问题,使您的术语保持一致。对不起,我现在编辑了它。我为我的问题粘贴了错误的SQL语句。我复制了很多东西@XERX593在这里工作正常:如果在任何类别中都没有产品,您将得到一个空结果。np,兄弟…只是为了调试,请执行:
select*from prodcuts
select*from categories