簡體   English   中英

MySQL:Select 行,其中字段包含唯一值

[英]MySQL: Select rows where field contains unique value

在 MySQL 數據庫中,我有一個包含各種產品數據的products表,包括company

ID 姓名 公司
1 產品一 AAA
2 另一種產品 BBB
3 又一款產品 CCC
4 項目 ZZZ BBB
5 產品A AAA
6 產品 uT DDD
7 產品 2z AAA

現在我想建立一個查詢,它將 select 所有具有唯一公司的產品 - 我的意思是一個公司,它在整個表中只出現一次。 在上面的例子中——第 3 行是 CCC 公司,第 6 行是公司 DDD。

我怎樣才能做到這一點?

您可以使用count(id) over(partition by company)

select id, name, company from
(select id, name, company , count(id) over(partition by company) cnt
from products) t
where cnt = 1;

小提琴

您可以使用 GROUP BY... HAVING 子句查找單獨的公司,然后按公司名稱加入它們。

SELECT * FROM products p
JOIN 
(SELECT company FROM products
GROUP BY company
HAVING COUNT(*) = 1) pg
ON p.company = pg.company

SQLFiddle在這里

MySQL 實際上會讓你做這個更簡單的查詢。 這在這種情況下有效,因為您要查找的組中只有一行。 但是,如果您正在為擁有 2 種產品的公司尋找所有產品,那么更簡單的版本將不再適用,因為您只會得到一排。 原始查詢將繼續與其他 HAVING 子句一起使用,例如 HAVING COUNT(*) > 10

SELECT id, product, company
FROM products
GROUP BY company
HAVING COUNT(*) = 1

您需要按公司分組,然后僅 select 具有一家公司的行:

SELECT `id`, `name`, `company` FROM `products` GROUP BY `company` HAVING COUNT(*)=1;

暫無
暫無

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

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