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

プレフィックス付きの高度なMySQLアルファベット順ソート?

    あなたはこれを行うことができます:

    ORDER BY IF(SUBSTRING(name, 1, 14) = 'University of ', SUBSTRING(name, 15), name)
    

    このテーブル上に、追加のname_valueを投影するビューを作成することをお勧めします。 IF()に設定された列 上記の式。次に、この列で並べ替えて、IF()でクエリを汚染することなく選択できます。 。

    大学名が列nameに格納されていると仮定したビューの例 :

    CREATE VIEW Universities AS
        SELECT
            list_universities.*,
            IF(SUBSTRING(name, 1, 14) = 'University of ',
               SUBSTRING(name, 15),
               name) AS name_value
        FROM list_universities;
    

    次に、Universitiesから選択できます list_universitiesから行うのと同じ方法 、ただし、追加のname_valueがあります 選択したり、並べ替えたりできる列。

    このアプローチ(およびORDER BY IF(...)に注意してください )nameのインデックスは使用できません 並べ替えのパフォーマンスを向上させるため。



    1. MySQLトリガーは、トリガーが割り当てられている同じテーブルの行を更新できません。推奨される回避策は?

    2. バイナリpgdump(圧縮)をプレーンSQLファイルに変換するにはどうすればよいですか?

    3. データベースからの値の確認と戻り

    4. MySQLとPostgreSQLDBをリバースエンジニアリングするためのアプリケーション?