簡體   English   中英

MySQL獲取默認或最小行的值

[英]MySql get value of default or min row

我有一張有結構的桌子

ID|GROUP_ID|DEFAULT|VALUE
13|      10|      0|   20
14|      11|      0|   30
15|      10|      0|   40
16|      10|      1|   50
17|      11|      0|   60

我想按規則為每個GROUP_ID獲取一行:

如果GROUP_ID有DEFAULT = 1的行,我必須得到這一行

如果GROUP_ID沒有DEFAULT = 1的行,我必須以MIN(VALUE)的行

對於上述數據,結果應為:

16|10|1|50
14|11|0|30

我該如何使用MySql?

您可以在MySQL中執行此操作。 這是一種方法:

select t.*
from t
where t.id = (select t2.id
              from t t2
              where t2.group_id = t.group_id
              order by (default = 1) desc, value asc
              limit 1
             );

子查詢根據您的規則對給定組的所有行進行排序。 表達式(default = 1) desc ,將默認值放在第一位。 在數字上下文中,MySQL將布爾值視為數字,其中“ 1”為true,“ 0”為false(因此為desc )。

暫無
暫無

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

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