mysql group by with whereは、まったく他の結果を返します

fefe

子のレコードが1である1対多の関係の子を選択しようとします。1つのレコードを持つ子をフェッチするには、次のクエリを使用します。

これは、whereステートメントを使用しない場合に機能する簡単なクエリです。

select a.iid, 
account_id,
count(*) as props

from  accounts_prop a
group by a.account_id
having props = 1

使用するwhereと、まったく別の結果が返されます。この場合、小道具には1つのレコードがありますが、実際には複数のレコードがあることを示すレコードを取得します。

    select a.iid, 
    account_id,
    count(*) as props

    from   accounts_prop a
    where a.von >= '2017-08-25'
    group by a.account_id

having props = 1

この場合私が欠けているもの

Tim Biegeleisen

よく調べてみると、元のクエリは確定していません。

SELECT
    a.iid,              -- OK, but which value of iid do we choose?
    a.account_id,
    COUNT(*) AS props
FROM accounts_prop a
GROUP BY a.account_id
HAVING props = 1

iid他の列に集約しながら列を選択しているため、クエリは意味がありませんアカウントごとにどの値をiid選択する必要がありますか?これは明確ではなく、クエリは特定のバージョンのMySQLや他のほとんどのデータベースでも実行されません。

代わりに、サブクエリにレコードが1つしかないアカウントを検索するロジックを配置し、そのサブクエリに参加して、一致するたびに完全なレコードを取得します。

SELECT a1.*
FROM accounts_prop a1
INNER JOIN
(
    SELECT account_id
    FROM accounts_prop
    GROUP BY account_id
    HAVING COUNT(*) = 1
) a2
    ON a1.account_id = a2.account_id
WHERE a1.von >= '2017-08-25'

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

group byを使用しない限り、mySQLカウントは1つの結果のみを返します

分類Dev

mysql WHERE BETWEEN by dateは間違った結果を返しますか?

分類Dev

mysqlはgroup_concatを使用して結合を残しました-単一の結果のみを表示します

分類Dev

MySQL GROUP BYは、他のnull列を無視またはスキップします

分類Dev

MySQL JOIN + WHERE + GROUP BY

分類Dev

GROUP BYMONTHは間違った結果をもたらします

分類Dev

NULLのある列エイリアスのGROUPBYは、MySQLで誤った結果を返します

分類Dev

MySQL GROUP BY が望ましい結果を与えない

分類Dev

GROUP BYの日付のMYSQLクエリ結果をどのようにループして表示しますか?

分類Dev

mysqlは、条件に基づいて多くの結果と最も近い結果にゼロを返します

分類Dev

MySQL移動平均は間違った結果を出します

分類Dev

MySQLクエリは間違った結果を出します

分類Dev

MySQL GROUP BYは、グループごとに複数の行を返します

分類Dev

一致を使用したMySQL全文検索は間違った結果セットを返します

分類Dev

グループはmysqlによって結果を返しました

分類Dev

同じクエリが異なる結果を返す(MySQL Group By)

分類Dev

MySQL SUMを実行し、他の複数の行の結果を返します

分類Dev

mysqlは数値の結果のみを返します

分類Dev

MySQLクエリ:結果の行を失うことなくGROUP BY

分類Dev

WHERE句で<>(等しくない)を使用すると、MySQLクエリが間違った結果を返す

分類Dev

結合を使用したmysqlクエリは結果を繰り返します

分類Dev

MySQL COUNT(*)は空の結果セットを返します

分類Dev

MySQLクエリは追加の結果を返します

分類Dev

MySQL、HAVINGは単一の結果を返します

分類Dev

dplyrの要約を使用したforループは、group_byとは異なる結果を返します

分類Dev

MySQL: GROUP BY

分類Dev

MySQL:GROUP BY

分類Dev

MySQLは、一致してはならないWHERE句の結果を返します

分類Dev

SUMを使用したIFは、MySQLで誤った結果を生成します

Related 関連記事

  1. 1

    group byを使用しない限り、mySQLカウントは1つの結果のみを返します

  2. 2

    mysql WHERE BETWEEN by dateは間違った結果を返しますか?

  3. 3

    mysqlはgroup_concatを使用して結合を残しました-単一の結果のみを表示します

  4. 4

    MySQL GROUP BYは、他のnull列を無視またはスキップします

  5. 5

    MySQL JOIN + WHERE + GROUP BY

  6. 6

    GROUP BYMONTHは間違った結果をもたらします

  7. 7

    NULLのある列エイリアスのGROUPBYは、MySQLで誤った結果を返します

  8. 8

    MySQL GROUP BY が望ましい結果を与えない

  9. 9

    GROUP BYの日付のMYSQLクエリ結果をどのようにループして表示しますか?

  10. 10

    mysqlは、条件に基づいて多くの結果と最も近い結果にゼロを返します

  11. 11

    MySQL移動平均は間違った結果を出します

  12. 12

    MySQLクエリは間違った結果を出します

  13. 13

    MySQL GROUP BYは、グループごとに複数の行を返します

  14. 14

    一致を使用したMySQL全文検索は間違った結果セットを返します

  15. 15

    グループはmysqlによって結果を返しました

  16. 16

    同じクエリが異なる結果を返す(MySQL Group By)

  17. 17

    MySQL SUMを実行し、他の複数の行の結果を返します

  18. 18

    mysqlは数値の結果のみを返します

  19. 19

    MySQLクエリ:結果の行を失うことなくGROUP BY

  20. 20

    WHERE句で<>(等しくない)を使用すると、MySQLクエリが間違った結果を返す

  21. 21

    結合を使用したmysqlクエリは結果を繰り返します

  22. 22

    MySQL COUNT(*)は空の結果セットを返します

  23. 23

    MySQLクエリは追加の結果を返します

  24. 24

    MySQL、HAVINGは単一の結果を返します

  25. 25

    dplyrの要約を使用したforループは、group_byとは異なる結果を返します

  26. 26

    MySQL: GROUP BY

  27. 27

    MySQL:GROUP BY

  28. 28

    MySQLは、一致してはならないWHERE句の結果を返します

  29. 29

    SUMを使用したIFは、MySQLで誤った結果を生成します

ホットタグ

アーカイブ