ここでフィールドの順序を維持しようとしています。何かご意見は?これにより結果が得られますが、結果はさまざまな順序で出てきます。場所を選択するキャスト - 注文を更新する
SELECT value FROM field_one WHERE cast(field_number as BINARY(6)) IN
(44,121.3,121.6,77,78,3,2.1,2.3,2.4,2.5) AND lead_id=1234 AND form_id=123
ここでフィールドの順序を維持しようとしています。何かご意見は?これにより結果が得られますが、結果はさまざまな順序で出てきます。場所を選択するキャスト - 注文を更新する
SELECT value FROM field_one WHERE cast(field_number as BINARY(6)) IN
(44,121.3,121.6,77,78,3,2.1,2.3,2.4,2.5) AND lead_id=1234 AND form_id=123
クエリにはorder by
句を指定する必要があります。 order by
がなければ、シーケンスは未定義です。
SELECT value
FROM field_one
WHERE cast(field_number as BINARY(6)) IN (44,121.3,121.6,77,78,3,2.1,2.3,2.4,2.5)
AND lead_id=1234
AND form_id=123
ORDER BY value
ありがとう - 私はより明確にすべきだった。注文はかなり単純です - 私は実際のfield_numbersを意味しました。しかし、高速応答を感謝! – Patrick
あなたのIN句の値の順序を維持しようとしている場合は、以下のように手動でオーダー/ランクを作成することができ、内側には、あなたのテーブルにそのJOINをし、その手動で作成した階層別オーダー。カスタムオーダー用
SELECT value
FROM field_one
INNER JOIN
(SELECT 1 as rank, 44 as val UNION ALL
SELECT 2 , 121.3 UNION ALL
SELECT 3, 121.6 UNION ALL
SELECT 4, 77 UNION ALL
SELECT 5, 78 UNION ALL
SELECT 6, 3 UNION ALL
SELECT 7, 2.1 UNION ALL
SELECT 8, 2.3 UNION ALL
SELECT 9, 2.4 UNION ALL
SELECT 10, 2.5)T
ON cast(field_number as BINARY(6)) = T.val
WHERE lead_id=1234 AND form_id=123
ORDER BY T.rank ASC
使用FIELD()
機能:
SELECT value FROM field_one WHERE cast(field_number as BINARY(6)) IN
(44,121.3,121.6,77,78,3,2.1,2.3,2.4,2.5) AND lead_id=1234 AND form_id=123
ORDER BY FIELD(cast(field_number as BINARY(6)), 44,121.3,121.6,77,78,3,2.1,2.3,2.4,2.5)
Paul - ありがとう、素晴らしい作品。 – Patrick
どの順序あなたが維持しようとしていますか? IN句で指定されたfield_number? 44,121.3などのように? –
なぜdownvote?明確化のラウンドは、これをクリアすることができます。 field_numbersの注文 - はい。 – Patrick