[英]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.