set @n=(select areaid from areas where areaname='江苏省'); set @n1=((SELECT COUNT(*) FROM customers) * 0.3); with tmp as (select customerid,sum(amount) amt from orders join orderitems using(orderid) group by customerid order by amt desc) select customerid,regionid,amt from tmp join customers b using(customerid) join areas c on b.regionid=c.areaid where b.regionid=@n limit @n1;错误在哪里
时间: 2023-06-12 21:04:10 浏览: 83
这个 SQL 查询语句有两个问题:
1. 在 MySQL 中,需要使用 DELIMITER 命令来改变语句分隔符,否则在一个语句中使用分号会被误认为是语句的结束。因此,你需要在语句开头添加 DELIMITER //,在语句结尾添加 // DELIMITER;,并将语句中的分号改为双斜杠。
2. 在 WITH 子句中,需要在 SELECT 语句之前添加逗号,否则会导致语法错误。因此,你需要在 WITH 子句中的 SELECT 语句前添加逗号。
修改后的 SQL 查询语句如下所示:
```
DELIMITER //
set @n=(select areaid from areas where areaname='江苏省');
set @n1=((SELECT COUNT(*) FROM customers) * 0.3);
with tmp as (
select customerid,sum(amount) amt
from orders join orderitems using(orderid)
group by customerid
order by amt desc
)
, select customerid,regionid,amt
from tmp join customers b using(customerid)
join areas c on b.regionid=c.areaid
where b.regionid=@n
limit @n1;
//
DELIMITER ;
```
注意,这个查询语句可能还存在其他问题,需要根据具体情况进行修改。
阅读全文