Neden # 1060 olsun çoğaltın - sütun adını yinelenen 'kimlik'# 1060 - sütun adı 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
Neden # 1060 olsun çoğaltın - sütun adını yinelenen 'kimlik'# 1060 - sütun adı 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
Muhtemelen select *
yılında * tip_usage
ve tips
aynı isimde iki sütun seçer çünkü.
... ve "alt sorgu seçim listesindeki sütunlar [olmalıdır] (http: // dev) .mysql.com/doc/refman/5.7/tr/from-clause-subqueries.html) benzersiz adlar. " –
Muhtemelen, iç seçmenin id
adıyla iki sütun vermesidir. Eğer bu sütunları kullandığınız Since, sadece select değiştirebilirsiniz:
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
Sorgunuz bu eşdeğerdir:
SELECT COUNT(DISTINCT id)
FROM tips
, bir birleştirmede gerek yoktur.
Bunun yerine bir INNER JOIN
istemediğinden emin misiniz?
Bildiğiniz gibi, bu bir SOL birleştirmesi olduğundan, birleştirilmiş tablodaki satırlar COUNT (*) tarafından döndürülen satır sayısını etkilemiyor mu? Siz de 'SELECT COUNT (*)' TİPİ ipucundan ' – Mchl
Hayır! Bekle! ... GROUP BY ... var ama toplama fonksiyonu yok ... bu sorgu sadece mantıklı değil. – Mchl
'id'' 'ipuçlarında' 'PRIMARY KEY'' id? 'Tip_usage' içinde bir ipucu için bir kaydın yoksa, bu ipucu sayılmalıdır? – Quassnoi