0

次のクエリは機能しますが、MySQL は結果セットをソートします。

SELECT STRINGTEXT FROM WEBSTRINGS WHERE GUI=0 AND LANGID='GB' AND TOKENID IN
(312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62, 63,87,88,89,90,208,210,249,309,310,311);

これは、レコードセットでこれを取得すると、データTOKENID 312が最初ではなく最後にあることを意味します。

結果セットが次のリクエストの順序で返されることを期待していました。

312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,6 3,87,88,89,90,208,210,249,309,310,311

しかし、それは次のように返されます:

47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,87 ,88,89,90,208,210,249,309,310,311,312

とにかく、MySQL がこのクエリに対してこれを行わないようにする方法はありますか? 私は本当に彼らがそのまま戻ってくる必要があります。

4

2 に答える 2

0

ORDER BY FIELD 」を使ってみてください

SELECT STRINGTEXT 
FROM WEBSTRINGS 
WHERE GUI=0 AND LANGID='GB' AND TOKENID IN (312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62, 63,87,88,89,90,208,210,249,309,310,311) 
ORDER BY FIELD (TOKENID,312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,6 3,87,88,89,90,208,210,249,309,310,311)
于 2014-03-19T05:09:21.673 に答える
0
SELECT STRINGTEXT 
FROM WEBSTRINGS 
WHERE GUI=0 
AND LANGID='GB' 
AND TOKENID IN (312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,87,88,89,90,208,210,249,309,310,311);
ORDER BY FIELD(TOKENID,312,47,48,49,50,51,52,53,54,55,56,57,58,60,61,62,63,87,88,89,90,208,210,249,309,310,311);

fieldドキュメント: http://dev.mysql.com/doc/refman/5.6/en/string-functions.html#function_field

于 2014-03-19T05:10:31.600 に答える