1

1 つの mysqli 結果に結合する必要がある同じテーブルに 2 つのクエリがあります。非常にユニークであることが証明されている問題は、個々のステートメントを順序付けし、順序を維持して 1 つの結果にマージすることです。これにより、各結果を反復処理できます。

以下は、クエリの簡略化されたバージョンです。

"SELECT number FROM items WHERE number > 0 ORDER BY number ASC"

"SELECT number FROM items WHERE number >= 0 ORDER BY number  DESC"

したがって、正と負の両方の値を持つテーブルが与えられた場合、結果は次のようになります。

1、2、3、4、5、0、-1、-2、-3、-4、-5

次に、結果が PHP の while ループに渡されます。

4

1 に答える 1

0

このようなものが動作するはずです:

SELECT number FROM (
    SELECT * FROM (
        SELECT number, number AS sort1, 'a' AS sort2 FROM items WHERE number > 0 ORDER BY number ASC
    ) s1
    UNION
        SELECT 0, 'b', 0 FROM items WHERE number = 0
    UNION SELECT * FROM (
        SELECT number, 'c' AS sort1, number AS sort2 FROM items WHERE number < 0 ORDER BY number  DESC
    ) s2
) ss1
ORDER BY ss1.sort1 ASC, ss1.sort2 ASC

これにより、結果の 3 つの部分が異なる並べ替えタグで選択されるため、それらを使用して必要な順序で並べることができます。トリックの部分は、それがある場所に置く0ことです。

于 2013-11-14T14:32:04.163 に答える