【问题标题】:SQL Join with not likeSQL Join 不喜欢
【发布时间】:2011-05-10 21:17:32
【问题描述】:

我使用的是 MySQL 5.0。

我基本上有一个 List Item 表和一个 List Title 表。每个 Title 可以有 60+ 个条目,都是文本。动态地,我试图返回包含人们想要包含或排除的项目的标题。我的查询基本上是:

Select Distinct TitleID from Titles
left join Items on Items.titleID = Titles.titleID
Where Items.Name not like 'Item 2'

如果任何项目的名称类似于“项目 2”,那么我不想要 TitleID。但是,可能还有 59 个其他名称与标题相关联,因此此查询仍然返回每个可能的 TitleID

我如何编写它以便只得到我正在寻找的TitleIDs?

【问题讨论】:

    标签: mysql join sql-like


    【解决方案1】:
    Select Distinct TitleID from Items
    Where TitleID not in (
    Select TitleID from Items
    Where Name like 'Item 2')
    

    但“第 2 项”中没有通配符,因此没有多大意义。

    【讨论】:

    • 是的,这只是一个简单的例子……但它确实有效!谢谢。
    【解决方案2】:
    SELECT t.TitleID
        FROM Titles t
        WHERE NOT EXISTS(SELECT NULL 
                             FROM Items i 
                             WHERE i.TitleID = t.TitleID 
                                 AND i.Name LIKE 'Item 2%')
    

    【讨论】:

    • 谢谢乔!你的格式更好,不过我也看到了与 Philip 方法的相似之处。
    • @Neil M. 一定要测试这两种方法。我怀疑我的可能表现更好(不存在与不存在)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多