2013-02-14 64 views
1

我有一個看起來像這樣排序項基於另一列的順序在PHP

Title  |  ID 
--------------------------------- 
Hello   45 
Hi    23 
Yo    52 
Test   76 

然後我有另一個表看起來像這樣一個數據庫:

List     | Order 
--------------------------------- 
Main List    76,23,45,52 

我想要做的是查詢數據庫,並根據第二個表的順序輸出第一個表的標題。

任何關於做這種事情的最佳方式的想法?

+0

你能告訴我們訂單的基礎是什麼? - 也許有一個更簡單的方法 – Goaler444 2013-02-14 19:20:53

回答

3
SELECT 
    * 
FROM 
    menu m 
    INNER JOIN links l ON (l.menu_id = m.menu_id) 
WHERE 
    m.menu_id = 123 
ORDER BY 
    FIND_IN_SET(l.link_id, m.menu_order) 

顯然,你需要改變在下面的評論,以反映實際的表和列名

每邁克爾Berkowski,如果你不具備這兩個表(所以你可以之間的聯繫「T加入),你可以完成相同的只有:

SELECT t1.* 
FROM t1 
ORDER BY FIND_IN_SET(ID, (SELECT `Order` FROM t2)) 

隨意更動他SQLFiddle例如:http://sqlfiddle.com/#!2/947e3/2

謝謝,邁克爾·

+0

'JOIN'不是必需的。 http://sqlfiddle.com/#!2/947e3/2 – 2013-02-14 19:23:20

+0

子選擇真的更高效嗎? – 2013-02-14 19:24:07

+0

我沒有說它更有效率。 Point在OP的數據中有兩個表之間沒有鏈接,所以你只需要選擇第一行的值。您也可以使用笛卡爾連接,但OPs示例表沒有「l.menu_id」的證據。 – 2013-02-14 19:25:21