哪些記錄我有以下表 'StockItems'(簡本爲例):MySQL的 - Select語句,集團通過對符合條件
+----+----------+---------+---------+---------+-----+
| ID | SubCatID | Item | GroupID | Size | Def |
+----+----------+---------+---------+---------+-----+
| 1 | 1 | 40mm | 2 | 1 | 1 |
| 2 | 1 | 40mm | 2 | 1 | 0 |
| 3 | 1 | 75mm | 3 | 1 | 1 |
| 4 | 2 | 90mm | 4 | NULL | 1 |
+----+----------+---------+---------+---------+-----+
下面是該查詢我:
SELECT ID, SubCatID, Item, GroupID
FROM StockItems
WHERE ((GroupID = 0 OR GroupID IS NULL) OR ((GroupID IS NOT NULL OR GroupID <> 0) AND Def = 1) OR Size IS NOT NULL) AND Del=0
ORDER BY SubCatID, Size, Item+0, Item
其中Def是GroupID中的默認項目,Del代表刪除
這可行,但我需要1個步驟來實現我想要的結果:我不想檢索具有相同GroupID和大小的記錄WHERE SubCatID = 1
如果羣ID和大小都相同的任何組ID,我希望它檢索記錄,其中防守= 1
我差點沒有通過使用以下查詢:
SELECT ID, SubCatID, Item, GroupID
FROM StockItems
WHERE ((GroupID = 0 OR GroupID is Null) OR ((GroupID IS NOT NULL OR GroupID <> 0) AND Def = 1) OR Size IS NOT NULL) AND Del=0
GROUP BY GroupID, Size
ORDER BY SubCatID, Size, Item+0, Item
但我只希望將GROUP BY應用於SubCatID = 1的記錄
我不確定是否GROUP BY是要走到這裏的路,它只是我看到的最接近我需要的東西
輸出第一查詢:
+-----+----------+---------------+----------+
| ID | SubCatID | Item | GroupID |
+-----+----------+---------------+----------+
| 1 | 1 | 40mm Pipe | 2 |
| 331 | 1 | 40mm Pipe | 2 |
| 329 | 1 | 63mm Pipe | 3 |
| 330 | 1 | 75mm Pipe | 4 |
| 2 | 1 | 40mm Pipe | 2 |
| 332 | 1 | 40mm Pipe | 2 |
| 3 | 1 | 63mm Pipe | 3 |
| 4 | 1 | 75mm Pipe | 4 |
| 6 | 1 | 110mm Pipe | 6 |
| 7 | 1 | 125mm Pipe | 7 |
| 8 | 1 | 160mm Pipe | 8 |
| 9 | 1 | 200mm Pipe | 9 |
| 10 | 1 | 250mm Pipe | 10 |
| 11 | 1 | 315mm Pipe | 11 |
| 12 | 1 | 355mm Pipe | 12 |
| 13 | 1 | 400mm Pipe | 13 |
| 14 | 1 | 450mm Pipe | 14 |
| 5 | 1 | 90mm Pipe | 5 |
| 15 | 18 | 63mm 90 Be | NULL |
| 16 | 18 | 75mm 90 Be | NULL |
| 17 | 18 | 90mm 90 Be | NULL |
| 18 | 18 | 110mm 90 Be | NULL |
| 19 | 18 | 125mm 90 Be | NULL |
| 20 | 18 | 160mm 90 Be | NULL |
+-----+----------+---------------+----------+
後查詢的輸出:
+-----+----------+---------------+----------+
| ID | SubCatID | Item | GroupID |
+-----+----------+---------------+----------+
| 1 | 1 | 40mm Pipe | 2 |
| 329 | 1 | 63mm Pipe | 3 |
| 330 | 1 | 75mm Pipe | 4 |
| 2 | 1 | 40mm Pipe | 2 |
| 3 | 1 | 63mm Pipe | 3 |
| 4 | 1 | 75mm Pipe | 4 |
| 6 | 1 | 110mm Pipe | 6 |
| 7 | 1 | 125mm Pipe | 7 |
| 8 | 1 | 160mm Pipe | 8 |
| 9 | 1 | 200mm Pipe | 9 |
| 10 | 1 | 250mm Pipe | 10 |
| 11 | 1 | 315mm Pipe | 11 |
| 12 | 1 | 355mm Pipe | 12 |
| 13 | 1 | 400mm Pipe | 13 |
| 14 | 1 | 450mm Pipe | 14 |
| 5 | 1 | 90mm Pipe | 5 |
| 15 | 18 | 63mm 9B | NULL |
| 327 | 61 | Stainless St | 20 |
+-----+----------+---------------+----------+
這就是我想要的東西,但也有很多記錄,其中羣ID = NULL和大小= NULL。因此這些不會出現在結果中。所以我只希望GROUP BY出現在SubCatID = 1的地方
能否請你幫我們一個大忙,並顯示你想要的精確的輸出? –
不明白你爲什麼使用GROUP BY子句而沒有任何聚合函數。 @Tim是對的,輸出會有所幫助。 – Sergio
編輯的帖子顯示我的查詢輸出 –