motivo per cui ho # 1060 - Duplica nome della colonna 'id'# 1060 - Duplica nome della colonna 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
motivo per cui ho # 1060 - Duplica nome della colonna 'id'# 1060 - Duplica nome della colonna 'id'
SELECT COUNT(*) FROM (SELECT * FROM `tips` `t` LEFT JOIN
tip_usage ON tip_usage.tip_id=t.id GROUP BY t.id) sq
Probabilmente perché l'* in select *
sceglie due colonne con lo stesso nome da tip_usage
e tips
.
... e "qualsiasi colonna nell'elenco selezione sottoquery [deve contenere] (http: // dev .mysql.com/doc/refman/5.7/it/from-clause-subqueries.html) nomi univoci. " –
Probabilmente è perché la selezione interna produce due colonne con il nome id
. Dal momento che non si utilizza quelle colonne, si può semplicemente cambiare la selezione per:
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
ricerca equivale a questo:
SELECT COUNT(DISTINCT id)
FROM tips
, non c'è bisogno in un join.
Sei sicuro di non volere uno INNER JOIN
?
Sei consapevole del fatto che, poiché si tratta di un join LEFT, le righe nella tabella unita non influenzano il numero di righe restituite da COUNT (*)? Si potrebbe anche fare 'SELECT COUNT (*) FROM tips' – Mchl
No! Aspetta! ... c'è un GROUP BY ... ma nessuna funzione di aggregazione ... questa query non ha alcun senso. – Mchl
È 'id' a' PRIMARY KEY' su 'tips'? Se non hai un record per un suggerimento in 'tip_usage', questo suggerimento dovrebbe essere contato? – Quassnoi