簡體   English   中英

需要幫助的MySQL查詢使用不喜歡

[英]Need help with MySQL Query using not like

我的桌子上有以下條目。

ID | Value
----------
1  | Apple
2  | Apple
2  | Grape

在這里我要提取所有不應該有Apple的ID

現在,如果在查詢中使用的不是'Apple',則將獲得ID 2,因為Grape在那。

因此,我想知道有什么方法可以提取不具有Apple的ID。

我不能使用子查詢之類的東西。 最主要的是在我們的應用程序中,我們將此查詢用作通用查詢,這意味着它應支持所有過濾器(如,不喜歡)。 所以在這里我不能使用子查詢。

提前致謝。

您可以使用子查詢

select id from table 
where id not in (
                 select id from table  
                 where value ='Apple'
                )

也許:

select * from dataTable where value not like 'Apple' and id not in(select id from datatable where value like 'Apple')

但是想知道重復的ID是否具有不同的值...

...,還有一個查詢-

SELECT id FROM fruits 
  GROUP BY id 
  HAVING COUNT(IF(value = 'Apple', 1, NULL)) = 0;

其他人怎么說,但帶有DISTINCT關鍵字,即:

select distinct id from table 
where id not in (
                 select id from table  
                 where value ='Apple'
                )

為了完整起見,這里是EXIST版本

SELECT id 
FROM table t
WHERE NOT EXIST (
                 SELECT 1 
                 FROM table t2 
                 WHERE value ='Apple' AND
                       t1.id = t2.id
                )

(通常,這些相關的子查詢的性能要好於不相關的子查詢,但是YMMV取決於數據模式,即使在很小的數據集上,索引也可能有數量級的差異)

編輯:

您還可以查看本文,以了解這三種方法之間的異同和一些推理(盡管結論不一定適用於您的情況-您只有一個表格,但它顯示了如何進行分析;尤其有趣的是比較計划和Devart解決方案的性能)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM