【发布时间】:2017-08-17 00:17:48
【问题描述】:
我一直在网上寻找单个表上多个联合的示例,我发现与我遇到的问题类似的唯一解决方案是 thread。
这是我在 MS ACCESS 中内置的查询
SELECT chat_tb.tag_1 AS [tag_desc], Count(chat_tb.tag_1) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_1
UNION
SELECT chat_tb.tag_2 AS [tag_desc], Count(chat_tb.tag_2) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_2
UNION
SELECT chat_tb.tag_3 AS [tag_desc], Count(chat_tb.tag_3) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_3;
但我收到以下错误,我假设因为它链接到 MySQL 表我无法按照当前语法执行联合,谁能帮助我将其更改为 mysql 格式,提前谢谢你!
注意:如果我删除最后一个联合,则该语句有效。
ODBC--调用失败。 {MySQL]{ODBC 3.51 Driver]您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行 (#1064 )
我发现了另一个thread 类似的问题。
并做了以下事情:
SELECT chat_tb.tag_1 AS [tag_desc], Count(chat_tb.tag_1) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_1;
UNION ALL (
SELECT chat_tb.tag_2 AS [tag_desc], Count(chat_tb.tag_2) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_2;
UNION ALL
SELECT chat_tb.tag_3 AS [tag_desc], Count(chat_tb.tag_3) AS [Count_of_tag] FROM chat_tb GROUP BY chat_tb.tag_3
));
这给了我一个“联合查询中的语法错误”
【问题讨论】:
-
去掉前两个分号(即两个并集语句之前的分号)
-
也不需要为每个查询提供别名字段名称,因为查询只会使用第一个查询中的名称 - 因此可以从后两个查询中删除
AS [tag_desc]等。 -
@JonathanWillcock 不幸的是,这并没有改变任何东西,我认为我需要 MySql SQL 语句,因为 MS Access 是链接到 MySQl 表。
-
您可能希望将数据库重新设计为 - 您的字段
tag_1、tag_2和tag_3看起来它们包含相同类型的信息。如果tag_1持有值,tag_2和tag_3是否为空?如果是这样,您可以只使用tag来保存文本以区分三个标签。然后,您可以只计算标签并按它们分组以获得您想要的结果。 -
您能否使用不起作用的新查询编辑您的帖子并发布错误(如果现在不同了)?