1

私はこのようなデータベースを持っています

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

そして、次のような別のテーブルがあります。

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

私がやりたいことは、データベースにクエリを実行し、2 番目のテーブルの順序に基づいて最初のテーブルのタイトルを出力することです。

このようなことを行うための最良の方法についてのアイデアはありますか?

4

1 に答える 1

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)

明らかに、実際のテーブルと列の名前を反映するように変更する必要があります

以下のコメントのMichaelBerkowskiによると、2つのテーブル間にリンクがない場合(つまり、参加できない場合)、次の方法で同じことを実行できます。

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

彼のSQLFiddleの例を自由にいじってください:http ://sqlfiddle.com/#!2/947e3/2

ありがとう、マイケル

于 2013-02-14T19:21:12.507 に答える