我有两个简单的列的表,因为这小提琴Sql fiddlermysql命令由两列奇标准
我想这个命令:
id rev
==========
1 1
2 3
6 3
3 1
4 2
10 2
5 1
7 1
8 1
9 1
我想为了通过与塔“身份证”,但如果'id'= 2,则下一个必须是具有相同'rev'值的'id'。
有可能吗?
[编辑]对不起,我修改了小提琴手......
[编辑25/10] 我试图编辑我的查询与@ P.Salmon回答时第一个表的ID是“militare”。 但有一个错误
1054 - 在“字段列表”未知列“转”
SELECT
`militari`.`ordine` militare,
`ordini_servizio_dati`.`id_pattuglia` rev,
`ordini_servizio_dati`.`oggetto_servizio`,
`ordini_servizio_dati`.`luogo`,
`ordini_servizio_dati`.`orario`,
`ordini_servizio_dati`.`aut_orario`,
`ordini_servizio_dati`.`siris`
FROM
`ordini_servizio_inizializzati`,
(
select
militare,
rev,
if(rev <> @p, @rn := 1, @rn := @rn + 1) rn,
if(
rev <> @p, @min := militare, @min := @min
) minid,
@p := rev p
from
`ordini_servizio_dati`,
(
select
@min := 0,
@rn := 0,
@p := 0
) r
order by
rev,
militare
) s
LEFT JOIN `schedario`.`ordini_servizio_dati` ON `ordini_servizio_inizializzati`.`id` = `ordini_servizio_dati`.`id_ordine`
LEFT JOIN `schedario`.`militari` ON `ordini_servizio_dati`.`militare` = `militari`.`matricola`
WHERE
(
`ordini_servizio_inizializzati`.`id` = '1'
)
order by
case when rev = 1 then militare else minid end,
rn
有什么逻辑呢? –
你能解释一下这个命令吗?我看不到'ORDER BY'的规则! –
_“我会这样的命令:”_ - 基于_what_?如果你根本不解释这个命令是基于什么的话,单独提供一个sqlfiddle是无济于事的。另外,小提琴中的“rev”列包含三个“2”,并且只有一个“3”。甚至连'id'和'rev'之间的关联都没有和你预期的输出结果一样...? – CBroe