Mysql 选择与其他表的id相同的名称-SQL
我有两个产品和类别表。对于产品,我有ff字段: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 然而,这一个没有工作,它只是给我发送了一个空
- 身份证
- pname
- 类别识别码
- 日期
- 身份证
- 名字
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