【问题标题】:retrieving items disregarded by a table join? [duplicate]检索表连接忽略的项目? [复制]
【发布时间】:2017-11-04 13:12:42
【问题描述】:

我有两个 mysql 表。 ItemTable 是一个简单的 item-id 和一些与 item 相关的数据。

 --------------------------------------
| ItemId | ItemDescription | ItemPrice |
 --------------------------------------

我有另一个表 CategoryTable 负责将项目分类为不同的类别

  --------------------------------------
| ItemId | CategoryId                   |
 ---------------------------------------

并非所有项目都被分类。在不更改两个表的模式的情况下找到未分类项目(通过其 id)的最快/最有效的方法是什么。我尝试在ItemId 上加入这两个表,但它忽略了未分类的项目。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    只需从CategoryTable 中选择ItemIds,然后选择ItemTable 中不在CategoryTable 中的那些id。

    SELECT ItemId
    FROM ItemTable
    WHERE ItemId NOT IN (SELECT C.ItemId
                         FROM CategoryTable C);
    

    如果您想要每个ItemId 及其Category,并且还包括那些没有类别的项目,您可以使用LEFT JOIN。这将为未分类项目的Category 字段输出NULL

    SELECT I.ItemId, C.Category
    FROM ItemTable I
    LEFT JOIN CategoryTable C
    ON I.ItemId = C.ItemId;
    

    【讨论】:

      猜你喜欢
      • 2014-05-25
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      • 2019-01-28
      • 2018-09-18
      • 1970-01-01
      • 2017-04-22
      相关资源
      最近更新 更多