MySQL 使用 JOIN 和 GROUP_CONCAT

Posted

技术标签:

【中文标题】MySQL 使用 JOIN 和 GROUP_CONCAT【英文标题】:MySQL using JOIN and GROUP_CONCAT 【发布时间】:2012-07-28 02:42:14 【问题描述】:

努力让这个查询工作:

$query_search = "SELECT questionnaires_index.id, questionnaires_index.ea_num, questionnaires_index.address, questionnaires_index.status, questionnaires_index.json_stored users.username FROM questionnaires_index INNER JOIN users ON questionnaires_index.interviewer_id = users.id WHERE questionnaires_index.interviewer_id IN (SELECT GROUP_CONCAT(id) FROM users WHERE supervisor = (SELECT id FROM users WHERE username = '".$username."'))";

收到此错误:

查询错误:。您的 SQL 语法有错误;检查 与您的 mysql 服务器版本相对应的手册 '.username FROM questions_index INNER JOIN 附近使用的语法 users ON users.id = 第 1 行的问卷调查

查询一直有效,直到我使用 JOIN 语句将 users.username 添加到结果集中。请帮忙。

【问题讨论】:

【参考方案1】:

你漏掉了一个逗号

$query_search = "选择问卷调查表_index.id、问卷调查表索引.ea_num、问卷调查表索引.地址、问卷调查表索引状态、问卷调查表索引.json_stored、users.username FROM问卷调查表_索引INNER JOIN用户在问卷调查表_index.interviewer_id = users.id WHERE问卷调查表.interviewer_id IN ( SELECT GROUP_CONCAT(id) FROM users WHERE supervisor = (SELECT id FROM users WHERE username = '".$username."'))";

【讨论】:

天哪。这就是经过数小时努力使此查询正常工作后发生的情况。【参考方案2】:

您似乎忘记在问卷调查表_index.json_stored 和 users.username 之间加逗号。

$query_search = "SELECT questionnaires_index.id, questionnaires_index.ea_num, questionnaires_index.address, questionnaires_index.status, questionnaires_index.json_stored ,users.username FROM questionnaires_index INNER JOIN users ON questionnaires_index.interviewer_id = users.id WHERE questionnaires_index.interviewer_id IN (SELECT GROUP_CONCAT(id) FROM users WHERE supervisor = (SELECT id FROM users WHERE username = '".$username."'))

【讨论】:

以上是关于MySQL 使用 JOIN 和 GROUP_CONCAT的主要内容,如果未能解决你的问题,请参考以下文章

Mysql的join语句

为什么MySQL不推荐使用子查询和join

Mysql 多表连接查询 inner join 和 outer join 的使用

mysql的unionleft join right join inner join和视图学习

MySQL 使用 JOIN 和 GROUP_CONCAT

MySQL:使用 JOIN 和 GROUP_CONCAT 进行更新