我有兩個簡單的列的表,因爲這小提琴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