【发布时间】:2015-09-29 06:11:03
【问题描述】:
我试图在 Visual Studio asp.net 中运行 SQL 查询,但出现此错误:
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 '' AND JobID = jn.ID GROUP BY JOBID)) 附近,如已交付, ' 在第 1 行
但我看不出问题出在哪里。
private static string SearchSQL
{
get{
return @" set @sql = null;
select
group_concat(distinct
concat(
'max(case when PieceType = ''',
PieceType,
''' then AdvisedQty end) AS ',
concat(PieceType)
)
)into @sql
FROM customer c
LEFT JOIN job_address ja ON c.AccountCode = ja.Code AND c.Company_ID = ja.Company_ID
JOIN AddressType jat ON ja.AddressType = jat.ID and jat.Description = ''Debtor''
LEFT JOIN job_new jn ON ja.JobID = jn.ID
LEFT JOIN job_pieces jp ON ja.JobID = jp.ID
WHERE c.Company_ID = ?compid;
set @sql = concat('select
c.Name,
COUNT(distinct jn.ID) as Jobs,
SUM((select COUNT(ID) from jobstat where Status = ''DEL'' AND JobID = jn.ID GROUP BY JOBID)) as Delivered,
SUM((select COUNT(ID) from jobstat where Status = ''POD'' AND JobID = jn.ID GROUP BY JobID)) as POD,
(select COUNT(job_debriefs.ID) from job_debriefs WHERE JobID = jn.JobNo) as Debriefs,
sum(jn.OutTurn) as Outturn,
SUM(jn.ActualWeight) as GrossWt,
SUM(jn.CBM) as CBM,
jn.Department,
(SELECT Name FROM job_address WHERE AddressType =3 AND JobID = jn.ID) as CollectName,
(SELECT Name FROM job_address WHERE AddressType =2 AND JobID = jn.ID) as DeliverName,
', @sql, '
FROM customer c
LEFT JOIN job_address ja ON c.AccountCode = ja.Code AND c.Company_ID = ja.Company_ID
JOIN AddressType jat ON ja.AddressType = jat.ID and jat.Description = ''Debtor''
LEFT JOIN job_new jn ON ja.JobID = jn.ID
LEFT JOIN job_pieces jp ON ja.JobID = jp.ID
WHERE c.Company_ID = ?compid
GROUP BY c.ID');
prepare stmt from @sql;
execute stmt;
deallocate prepare stmt;
";
}
}
好的,我修复了单引号,但现在出现的错误是:
您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 靠近'?compid GROUP BY c.ID' 在第 19 行
它正在寻找 compid,所以这不是问题
【问题讨论】:
-
如果您尝试直接在 DBMS 中运行 SQL 代码,您可能会收到更有用的错误消息。
-
@TheTTGGuy 我尝试在 MySQL Workbench 中运行查询,但出现错误:
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'max(case when PieceType = 'Carton' then AdvisedQty end) AS Carton,max(case when ' at line 13 -
那条线周围有双括号有什么原因吗?你应该只需要一个(这可能不是问题,但用单括号试试)
-
将代码直接放入 MYSQL 时,请确保没有任何多余的单 '
-
您忘记添加第二个单引号以进行转义:Status = ''DEL'' and Status = ''POD''
标签: c# mysql sql asp.net visual-studio