【问题标题】:Count unique values when left join in mysql在mysql中左连接时计算唯一值
【发布时间】:2016-04-10 08:27:31
【问题描述】:

我有两张桌子:
第一个:项目 >> p_id、p_name、p_description
第二:任务 >> t_id, t_project, t_name, t_owner
其中 p_id 与 t_prject 链接

我想要做的是获取一个任务所有者参与的项目数量,所以我想我需要加入这两个表,并且他们使过滤器获得一个数字作为某人的项目数量参与,看看其他答案我是这样做的:

SELECT tasks.t_project, COUNT(DISTINCT tasks.t_project ) AS result,
FROM 'tasks' 
LEFT JOIN users ON tasks.t_owner = users.u_id 
WHERE tasks.t_owner=17 
group by 'tasks.t_project'

但是mysql报错

#1064 - 您的 SQL 语法有错误;在第 3 行。

【问题讨论】:

  • 不要使用引号来转义表名或列名。使用反引号
  • @sagi:不要编辑掉代码中的错误
  • @juergend 不要编辑代码结构

标签: mysql


【解决方案1】:

您使用单引号 ' 作为列/表名称,这是错误的,您应该使用反引号。通常,反引号用于 MySQL 保留字,以防您将表称为 table 或 max 或任何其他保留字。单引号 ' 用于字符串,当将文本放在引号内时,它将被自动识别为字符串。

这个查询应该可以工作:

SELECT tasks.t_project, COUNT(DISTINCT tasks.t_project ) AS result,
FROM tasks t
LEFT JOIN users u ON t.t_owner = u.u_id
WHERE  t.t_owner=17
group by t.t_project

由于您没有使用任何保留关键字,因此我没有使用反引号,您也可以为表名起别名,这样就不会发生这种冲突。

你可以read this documents that provides all of MySQL reserved keywords.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2013-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-03
    相关资源
    最近更新 更多