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

mysql 5.6のANY_VALUE機能はありますか?

    悪名高い非標準のMySQL拡張機能をGROUPに悪用していますBY 。集計ではなく、GROUP BYで言及されていない列について言及しているため、標準SQLは常にクエリを拒否します。 。開発システムでは、ANY_VALUE()を使用してこれを回避しようとしています。 。

    本番環境では、ONLY_FULL_GROUP_BYMySQLモードをオフにすることができます。 。 これ を実行してみてください :

      SET @mode := @@SESSION.sql_mode;
      SET SESSION sql_mode = '';
      /* your query here */
      SET SESSION sql_mode = @mode;
    

    これにより、MySQLがクエリを受け入れることができます。

    しかし、見てください、あなたのクエリは本当に正しくありません。実行するように説得できる場合は、imagesからランダムに選択された行を返します テーブル。この種の不確定性は、ユーザーとテクニカルサポートクルーに混乱をもたらすことがよくあります。

    クエリを改善して、特定の画像を選択してみませんか。 imagesの場合 テーブルには自動インクリメントのidがあります 列これを実行して、「最初の」画像を選択できます。

    SELECT c.id, c.name, i.*
      FROM countries c
      LEFT JOIN (
           SELECT MIN(id) id, country_id
             FROM images
            GROUP BY country_id
           ) first ON c.id = first.country_id
      LEFT JOIN images i ON first.id = i.id
    

    これにより、国ごとに1行が返され、予測可能な画像が表示されます。



    1. PostgreSQLで日付をユリウス日に変換する

    2. SQLステートメントでパラメーターを使用することを常に好むのはなぜですか?

    3. MS SQL Server 2005の日付から週番号を取得しますか?

    4. SQLServerはVarcharを日時に変換します