我有一個映射表,將某些 ID 映射到彼此(產品和類別)。現在我需要檢查在這個映射類別中是否有多行。例如,每個產品的類別 id 的標準映射為 1。現在可能有更多行具有其他類別 id。例如:
Product_id Category_id
1 1
1 2
2 1
3 1
4 1
4 2
我只需要選擇那些只有產品 id 和類別 id 為 1 的行。所以在這種情況下,我想選擇 id 為 2,3 的產品。因為 1 和 4 有多個類別 ID。
我有這個查詢(這是一個連接,因為我想在這個查詢中添加一些其他資料):
SELECT * FROM `products` as P
LEFT JOIN `product_categories` as PC
ON PC.`product_id` = P.`product_id`
WHERE PC.`category_id` = 1 AND
LIMIT 10
現在我不知道我需要在 Where 陳述句中做什么。誰能幫我?
我想過使用計數,但我認為這不是最好的解決方案。也許檢查類別 id 中是否有除 1 以外的其他值?
uj5u.com熱心網友回復:
我已將您的表格視為參考。之后您可以添加或執行連接。
您不能在此處添加位置。計數是一個組函式(也稱為聚合函式)。因此,您必須添加“擁有”而不是“位置”。
創建表:
CREATE TABLE IF NOT EXISTS `test` (
`product_id` int(6) unsigned NOT NULL,
`category_id` int(6) unsigned NOT NULL
) DEFAULT CHARSET=utf8;
INSERT INTO `test` (`product_id`, `category_id`) VALUES
(1,1),
(1,2),
(2,1),
(3,1),
(4,1),
(4,2)
結果生成SQL:
select product_id,category_id
from test group by product_id having count(product_id)<2
輸出:
product_id category_id
---------- ------------
2 1
3 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/382371.html
