0

我正在尝试使用 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 服务器版本相对应的手册,以在 'from account a, branch b, individual i where b.name = 'So. NH Branch' 或 b.name ' 在第 2 行

4

3 回答 3

3

您的 : 中有一个额外的逗号SELECT

SELECT a.cust_id, 
  a.account_id, 
  a.product_cd, 
  status, 
  b.name, 
  i.fname, 
  i.lname, 
         ^ --- this is incorrect.

我确实看到你的查询很奇怪的一件事是你没有加入你的表,你正在返回一个笛卡尔结果集。

如果您不想要笛卡尔结果集,则可以JOIN在表之间使用 a。与此类似:

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;

注意:我猜到了将加入表格的列名。

于 2013-02-01T18:49:19.073 回答
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; 
于 2013-02-01T18:51:48.367 回答
0

除了有关笛卡尔积和错误逗号的其他答案之外,如果您只是想对应该使用的数据进行排序,ORDER BY而不是GROUP BY后者仅在使用聚合函数时才需要。

于 2013-02-01T20:18:12.667 回答