2016-01-12 25 views
0

我有一個由入境日期排序列表:MySQL的排序:條件多列

  • 作業C,EN-GB,2016年1月12日08:00:00
  • JOB B,EN-GB,2016年1月12日8時10分〇〇秒
  • JOB A,EN-GB,2016年1月12日8點20分00秒

比方說,我現在補充:

  • JOB B,FR-FR,2016年1月12日08:30:00

在當前查詢,列表如下所示:

  • 作業C,EN-GB 2016 -01-12 08:00:00
  • JOB B,en-GB,2016-01-12 08:10:00
  • JOB A,en-GB,2016-01-12 08:20:00
  • 工作B,fr-FR,2016-01-12 08:30:00

http://sqlfiddle.com/#!9/8d61d7/2

我需要的結果是這樣的:

  • 作業C,EN-GB,2016年1月12日08:00:00
  • JOB B,EN-GB, 2016-01-12 08:10:00
  • JOB B,fr-FR,2016-01-12 08:30:00
  • JOB A,en-GB,2016-01-12 08:20:00

所以最初的排序是通過created_at,但JOB B,FR-FR現在低於JOB B,EN-GB記錄。

對不起,令人費解的解釋...

+0

在這種情況下,「Job B」和「fr-FR」已經插入到您的表中了嗎? – Webster

+0

是的,手動,以演示預期的結果。 SQLFiddle應顯示條目,但位置不正確。我需要它來匹配上面的演示... – JustBaron

+0

嗨,看到我的回答 – Webster

回答

1

,如果是的話,我寧願使用UNION ALL,並添加「ID」 SELECT語句。 這裏是代碼

SELECT * 
FROM (
select 1 as id, name, job, created_at from yourtable where created_at <= '2016-01-12 08:10:00' 
union all 
select 2 as id, name, job, created_at from yourtable where job = 'fr-FR' 
union all 
select 3 as id, name, job, created_at from yourtable where created_at = '2016-01-12 08:20:00' 
) x 
order by x.id, x.created_at 
+0

謝謝,但我想我需要一個更可行的解決方案。我已經更新了原來的帖子,也許可以解釋這個問題。 – JustBaron