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

このクエリがSQLiteで機能しないのに、MySQLとMSAccessでは正常に機能するのはなぜですか?

    SQLiteでは、 INTEGER PRIMARYKEY を使用して自動インクリメント列を取得します (そして、payers.idの実際の値に依存している場合 クエリでは、明示的に指定する必要があります。)

    必要のないときに結合をネストしようとしないでください:

    SELECT payer_payment.payer_id,
           Sum(payer_payment.amount)                             AS total_paid,
           Sum(payer_payment.pays * payments_share.single_share) AS fair_share
    FROM       payers
    INNER JOIN payer_payment
            ON payers.id = payer_payment.payer_id
    INNER JOIN (SELECT payment_id,
                       Sum(amount) / Sum(pays) AS single_share
                FROM   payer_payment
                GROUP  BY payment_id) AS payments_share
            ON payer_payment.payment_id = payments_share.payment_id
    WHERE payers.user_id = 1
    GROUP BY payer_payment.payer_id;
    

    SQLFiddle




    1. Hibernate session.beginTransaction()呼び出しとMysql Start Transaction

    2. MYSQL:文字列リテラルでGROUPBYを使用する

    3. SQL SELECT MIN

    4. 2つの日付の間の営業日または営業時間を取得する方法