簡體   English   中英

MySQL MIN()限制(按列)

[英]MySQL MIN() limit by column

我有一個MySQL表格,其格式如下:

group_clue:
---------------------------------------------------
| id | group_id | clue_id | completed | run_order |
---------------------------------------------------
|  1 |        1 |       2 |         1 |         1 |
|  2 |        1 |       6 |         1 |         2 |
|  3 |        1 |       4 |         1 |         3 |
|  4 |        1 |       3 |         0 |         4 |
|  5 |        1 |       1 |         0 |         5 |
|  6 |        1 |       5 |         0 |         6 |
|  7 |        2 |       9 |         1 |         1 |
|  8 |        2 |       2 |         0 |         2 |
 ...
---------------------------------------------------

在上面的數據group_clue被構造成使得每個group_id具有每clue_id在一些run_order (范圍從1到的數量clue_id s且不重復特定組)。

第一個問題

我想創建示出了第一表clue_id每個group_id其中completed = 0時由有序run_order (別名為current_clue )。 使用上面的示例,將得出:

---------------------------
| group_id | current_clue |
---------------------------
|        1 |            3 |
|        2 |            2 |
---------------------------

我的初步嘗試是:

SELECT group_id, MIN(clue_id) as current_clue
FROM group_clue
WHERE completed = 0
GROUP BY group_id

然而,這種返回相同clue_id每個group_id

第二個問題

根據第一個問題中的數據,我想組成一個最終表,在這些表中,我GROUP_CONCAT()這些結果將包含每個current_clue和每個包含該current_clue group_id 我也希望它按從group_ids最多的group_ids到最少的線索排序。 結果表的示例為:

--------------------
| clue | group_ids |
--------------------
|    3 | 1,5,4,3   |
|    2 | 2,6       |
--------------------

我無法弄清楚順序。 我的初步嘗試是:

SELECT clue_id, GROUP_CONCAT(group_id)
FROM [resulting_table]
GROUP BY clue_id
ORDER BY [something]

感謝您提供任何幫助:哪種查詢適合這種情況?

您問題的第一部分可以通過這種方式解決(它希望每個組的run_order是唯一的):

    SELECT t1.group_id,
           t1.clue_id AS current_clue
      FROM group_clue t1
INNER JOIN (SELECT group_id,
                   MIN(run_order) as run_order
              FROM group_clue
             WHERE completed = 0
          GROUP BY group_id) t2 USING (group_id, run_order)

該查詢的邏輯非常簡單:

  1. 內部查詢選擇的對group_id和相應最小值run_order其具有completed = 0
  2. 之后,我們將原始表加入這對對,以便我們可以另外選擇相應的clue_id

您可以使用以下方式按每組元素的數量排序

ORDER BY COUNT(*) DESC

暫無
暫無

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

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