[英]merge TWO results of SQL select
同一个mysql表中有两种类型的数据。
某些数据的特定列设置为“1”,另一个数据的列设置为“0”(同一列中的 0 和 1)
我怎样才能像下面那样一次性混合它们? (使用选择查询) - 每六个“0”行后跟一个“1”行。
好吧,您可以使用窗口函数进行排序 - 如果您运行的是 MySQL 8.0:
select code, val
from mytable
order by
row_number() over(partition by val order by code)
* (case when val = 0 then 1 else 5 end),
val,
code
逻辑是对具有相同值的记录进行排名; 然后可以使用简单的算法来处理交替(5 0
秒,然后是 1 1
)。
code | val :----- | --: data1 | 0 data10 | 0 data11 | 0 data12 | 0 data13 | 0 data2 | 1 data14 | 0 data15 | 0 data3 | 0 data4 | 0 data5 | 0 data8 | 1 data6 | 0 data7 | 0 data9 | 0
我会这样表述:
order by ( floor(row_number() over (partition by column order by data) - 1) /
(case when column = 1 then 1 else 5 end)
)
),
column,
data
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.