sql >> データベース >  >> RDS >> Mysql

ユニオンを使用したmysqlの順序付けが機能していないようです

    MySQLからドキュメント :

    基本的にORDERの場合のみ LIMITを使用している場合は、ユニオンで便利になります 同様に。

    したがって、クエリが次のようになっている場合:

    (SELECT * FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") ORDER BY `ups` DESC,`downs` ASC LIMIT 10)
    UNION ...
    

    次に、その順序に基づいて返される最初の10個のレコードが表示されますが、必ずしも順番に表示されるとは限りません。

    更新:

    これを試してください-

    (SELECT *, 1 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only three doors%" OR `joke` LIKE "%only three doors%") )
    UNION
    (SELECT *, 2 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%only%" OR `joke` LIKE "%only%") )
    UNION
    (SELECT *, 3 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%three%" OR `joke` LIKE "%three%") )
    UNION
    (SELECT *, 4 as ob FROM `jokes` WHERE `flags` < 5 AND (`title` LIKE "%doors%" OR `joke` LIKE "%doors%"))
     ORDER BY `ob`, `ups` DESC,`downs` ASC LIMIT 0, 30
    


    1. SQL-2つの異なるテーブルから行を選択します

    2. MySqlとEntityFramework4.1コードを最初に使用する方法

    3. MySQL整数フィールドマッチング文字列で何が起こっていますか?

    4. DjangoManyToManyと複数のデータベース