我正在尝试使用GROUP BY函数对数据进行排序。我的查询工作正常,直到我添加它。这是:
SELECT a.cust_id, a.account_id, a.product_cd, status, b.name, i.fname, i.lname,
from account a, branch b, individual i
where b.name = 'So. NH Branch' or b.name = 'Woburn Branch' and a.status = 'ACTIVE'
group by b.name;
我收到此消息:您的SQL语法出错;检查与您的MySQL服务器版本相对应的手册,以便在'来自帐户a,分支b,个人i'附近使用正确的语法 其中b.name ='所以。第2行的NH Branch'或b.name'
答案 0 :(得分:3)
SELECT
中还有一个额外的逗号:
SELECT a.cust_id,
a.account_id,
a.product_cd,
status,
b.name,
i.fname,
i.lname,
^ --- this is incorrect.
我确实看到一件事,你的查询很奇怪,你没有加入你的表,你返回一个笛卡尔结果集。
如果您不想要笛卡尔结果集,那么您将在表之间使用JOIN
。与此类似:
SELECT a.cust_id,
a.account_id,
a.product_cd,
status,
b.name,
i.fname,
i.lname
from account a
INNER JOIN branch b
ON a.branchid = b.id
INNER JOIN individual i
ON a.individualid = i.id
where b.name = 'So. NH Branch' or b.name = 'Woburn Branch' and a.status = 'ACTIVE'
group by b.name;
注意:我猜到了将加入表格的列名。
答案 1 :(得分:1)
另外,bluefeet指出错误的逗号,你正在制作一个笛卡尔积。这可能不是你想要的。您需要以某种方式关联表格(仅供参考):
SELECT a.cust_id,
a.account_id,
a.product_cd,
status,
b.name,
i.fname,
i.lname
FROM account a,
branch b,
individual i
WHERE i.cust_id = a.cust_id <-- JOIN individual to account
AND b.account_id = a.account_id <-- JOIN branch to individual
AND b.name = 'So. NH Branch'
OR b.name = 'Woburn Branch'
AND a.status = 'ACTIVE'
GROUP BY b.name;
答案 2 :(得分:0)
除了关于笛卡尔积和错误逗号的其他答案之外,如果您只是尝试对数据进行排序,则应使用ORDER BY
而不是GROUP BY
,因为后者仅在使用聚合函数。