![](/img/trans.png)
[英]Group rows by one column value, sum another column and count occurrences
[英]MySQL group rows by one column sorting by another column
我正在開發一個PHP腳本,並且具有下表:
+----+-----------+----------+--------------+
| id | id_parent | position | feature |
+----+------------+---------+--------------+
| 1 | 1 | 2 | -B-A-C- |
| 2 | 1 | 3 | -B-C- |
| 3 | 2 | 4 | -C-B- |
| 4 | 3 | 1 | -A-B- |
| 5 | 1 | 6 | -A-C- |
| 6 | 2 | 5 | -C-B- |
| 7 | 2 | 7 | -B-C- |
| 8 | 3 | 8 | -A- |
+----+-----------+----------+--------------+
從該表中,我想選擇所有具有“功能”的行,例如“%-A-%”,但首先顯示結果的最低“位置”,然后顯示所有具有相同值的列“ id_parent”第一個結果,然后是第二個最低“位置”的行,以及所有具有相同結果“ id_parent”的行,第二個最低“位置”的行,依此類推……因此最終結果應為:
+----+-----------+----------+--------------+
| id | id_parent | position | feature |
+----+------------+---------+--------------+
| 4 | 3 | 1 | -A-B- |
| 8 | 3 | 8 | -A- |
| 1 | 1 | 2 | -B-A-C- |
| 5 | 1 | 6 | -A-C- |
+----+-----------+----------+--------------+
由於某些原因,我在這里無法解釋,我需要具有HAVING子句來選擇正確的“功能”值(...具有“功能”之類的“%-A-%”...。)。
是否有可能使用MySQL(可能沒有子查詢)或通過使用PHP處理數據結果來實現所有這些?
這有幫助嗎? 我把問題的最后一部分留給讀者作為練習。
SELECT a.*
, c.*
FROM my_table a
JOIN
( SELECT id_parent, MIN(position) position FROM my_table WHERE feature = 'a' GROUP BY id_parent ) b
ON b.id_parent = a.id_parent
AND b.position = a.position
JOIN my_table c
ON c.feature = a.feature
AND c.id_parent = a.id_parent;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.