gpt4 book ai didi

Mysql如何根据优先级进行选择

转载 作者:行者123 更新时间:2023-11-30 22:07:27 25 4
gpt4 key购买 nike

如何通过联接和分组依据或任何其他替代方法实现这一点

选项卡 1:

id | data  
1 | aaa
2 | bbb
3 | ccc

选项卡 2:

id  | tab1ID | status  
101 | 1 | Y
102 | 2 | Y
103 | 1 | X
104 | 2 | X
105 | 3 | X
106 | 1 | Z
107 | 2 | Z

要求的输出:

id | data | status  
1 | aaa | Z
2 | bbb | Z
3 | ccc | X

结果中必须出现具有最高优先级状态的记录 Z > Y > X

我想避免创建单独的表来存储优先顺序

编辑 1:更改样本数据

最佳答案

首先,根据列tablIDstatus 的优先级,给第二个表一个行号。然后将它与第一个表连接起来以获取列 iddata 并仅选择行号为 1 的行。

查询

select t1.`id`, t1.`data`, t2.`status` from `tab1` t1left join(  select `id`, `tab1ID`, `status`,  (    case `tab1ID` when @curA     then @curRow := @curRow + 1     else @curRow := 1 and @curA := `tab1ID` end   ) as rn   from `tab2`,  (select @curRow := 0, @curA := '') r   order by `tab1ID`, case `status` when 'Z' then 1                      when 'Y' then 2 when 'X' then 3 else 4 end)t2on t1.`id` = t2.`tab1ID`where t2.rn = 1;

SQL Fiddle Demo

关于Mysql如何根据优先级进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41163709/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com