我有兩個表。SQL排序與多個標準
TAB1:
+------------+
| id | title |
+------------+
| 1 | B |
| 2 | C |
| 3 | A |
| 4 | A |
| 5 | A |
| 6 | A |
| ... |
+------------+
TAB2:
+-------------------------------------------+
| id | item_id | item_key | item_value |
+-------------------------------------------+
| 1 | 1 | value | $4 |
| 2 | 1 | url | http://h.com/ |
| 3 | 2 | value | $5 |
| 4 | 3 | url | http://i.com/ |
| 5 | 3 | value | $1 |
| 6 | 3 | url | http://y.com/ |
| 7 | 4 | value | $2 |
| 8 | 4 | url | http://z.com/ |
| 9 | 5 | value | $1 |
| 10 | 5 | url | http://123.com/ |
| ... |
+-------------------------------------------+
- ITEM_ID是從TAB1的外鍵。
我該如何做到這一點,所以我根據兩個表中的條件按順序從Tab1中獲取ID表。標準如下:
- 按標題訂購ASC。如果標題相同,則按價值排序DESC
- 。如果標題和值都相同,
- 優先考慮'url'鍵包含'123.com'的項目。
與所訂購的結果生成的表是:
+------------+
| id | title |
+------------+
| 4 | A |
| 5 | A |
| 3 | A |
| 6 | A |
| 1 | B |
| 2 | C |
| ... |
+------------+
結果應當包括那些沒有一個項目,這兩者或沒有從TAB2組字段。
任何想法如何使它在結果中包含tab1中沒有'item_key'='value'或沒有'item_key'='url'設置在tab2中的項目? – c10b10
@ c10b10是的,普通[用'LEFT JOIN'替換'JOIN'](http://sqlfiddle.com/#!2/8c223/1)應該這樣做,但是你想要的排序順序並不能說明按照什麼順序如果缺少一行,請將它們放入。 –
這很棒,因爲那些東西只剩下最後一個。謝謝! – c10b10