私は#1060を取得する理由 - select *
中*はtip_usage
とtips
から同じ名前を持つ2つの列を選択するため、重複する列名 'ID'#1060 - 重複列名 'ID'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
私は#1060を取得する理由 - select *
中*はtip_usage
とtips
から同じ名前を持つ2つの列を選択するため、重複する列名 'ID'#1060 - 重複列名 'ID'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
を。
...「サブクエリ選択リストの任意の列は必須です(http:// dev .mysql.com/doc/refman/5.7/ja/from-clause-subqueries.html)の一意の名前です。 –
おそらく、それは内部セレクタが名前がid
の2つのカラムを生成するからです。あなたはそれらの列を使用していないので、あなただけの選択を変更することができます。
SELECT COUNT(*) FROM (SELECT t.id FROM `tips` `t`
LEFT JOIN tip_usage ON tip_usage.tip_id=t.id
GROUP BY t.id) sq
あなたのクエリがこれに相当します。
SELECT COUNT(DISTINCT id)
FROM tips
、参加中の必要はありません。
INNER JOIN
を代わりに使用してもよろしいですか?
LEFT結合であるため、結合された表の行はCOUNT(*)によって返される行の数に影響しないことを認識していますか?あなたは 'COUNT(*)FROM tips'を – Mchl
いいえ!待って!... GROUP BYがありますが、集約関数はありません...このクエリは意味がありません。 – Mchl
'id'は' tips'の 'PRIMARY KEY'ですか? 'tip_usage'にヒントのレコードがない場合は、このヒントを数えますか? – Quassnoi