【发布时间】:2016-02-20 05:03:24
【问题描述】:
我试图在 PhpMyAdmin 中运行我的动态查询,但 mysql 显示如下:
错误:#1064 - 您的 SQL 语法有错误;检查 与您的 MySQL 服务器版本相对应的手册 'DECLARE @DynamicQuery AS nvarchar(max) DECLARE 附近使用的语法 @AgrColumns AS nvarchar(max)' 在第 1 行
这是我的查询:
DECLARE @DynamicQuery AS nvarchar(max)
DECLARE @AgrColumns AS nvarchar(max)
--Get distinct values of the Column
SELECT @AgrColumns = ISNULL(@AgrColumns + ',', '') + 'SUM(CASE WHEN REASON_NAME = ''' + REASON_NAME + ''' THEN cnt ELSE 0 END) AS ' + QUOTENAME(REASON_NAME)
FROM (SELECT DISTINCT REASON_NAME FROM Reason) AS Reasons
--Prepare the query using the dynamic
SET @DynamicQuery =
N'SELECT ' + @AgrColumns + ' FROM
(
SELECT r.REASON_NAME, SUM(CASE WHEN c.ID is null OR rg.ID IS NULL THEN 0 ELSE 1 END) AS cnt
FROM Reason r
LEFT JOIN Chat c ON (c.REASON_ID = r.ID)
LEFT JOIN Reason_Group rg ON (r.REASON_GROUP_ID = rg.ID)
GROUP BY REASON_NAME
) inn'
--Execute the Dynamic Query
EXEC sp_executesql @DynamicQuery
第一桌聊天:
ID REASON_ID DEPARTMENT_ID
1 46 1
2 46 1
3 50 1
4 50 2
5 100 1
6 100 2
二表原因:
ID REASON_NAME REASON_GROUP_ID
46 Reason1 1
50 Reason2 1
100 Reason3 2
101 Reason4 2
105 Reqson5 3
第三张表 Reason_Group :
ID NAME
1 Group1
2 Group2
3 Group3
我该如何解决这个问题? PhpMyAdmin 版本:4.2.11
【问题讨论】:
-
分号。你需要分号。
-
所有分号都是真的@Darwin von Corax
-
您的代码中没有语句分隔符。您需要一个分号(或任何当前分隔符)来标记每个语句的结尾。
标签: mysql phpmyadmin dynamic-sql