为什么我得到#1060 - 重复列名 '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 - 重复列名 '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
可能是因为select *
的*从tip_usage
和tips
选择具有相同名称的两列。
可能是因为内部选择产生两列,名称为id
。既然你不使用这些列,你可以改变的选择:
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(*)返回的行数?你也可以做`SELECT COUNT(*)FROM tips` – Mchl 2011-01-27 11:22:04
不!等等!...有一个GROUP BY ...但没有聚合函数...这个查询没有任何意义。 – Mchl 2011-01-27 11:24:22