需要新行才能成功

7cjasjjr  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(265)

我陷入了非常奇怪的境地。我从php编辑器生成代码,正如您所知,我在一行中得到的代码都是非格式化的。
这是我的密码:

SELECT ua.id            AS ua_id, 
       ua.activity_time AS ua_activity_time, 
       ua.user_id       AS ua_user_id, 
       ua.charter_id    AS ua_charter_id, 
       'table'          AS ua_table_name, 
       Concat(Round(Timestampdiff(minute, ua.activity_time, Now()) / 30, 0), '-' 
       , ua.charter_id)   AS delimiter 
FROM   user_activity_charter_update AS ua 
WHERE  ua.activity_time BETWEEN '2018-07-10 00:00:00' AND '2018-08-10 00:00:00'

它报告语法错误:
sql语法有错误;查看与您的mysql服务器版本对应的手册,以获得正确的语法,以便在第1行的“user\u activity\u charter\u update as ua where ua.activity\u time between'2018-07-10 00”附近使用
但更奇怪的是,当我在前面从中点击空格并将其放入新行时,查询工作正常。

i5desfxk

i5desfxk1#

问题出在select语句中的关键字delimter中,因为mysql将查询中的分隔符解释为命令。您可以在这里看到有关分隔符的更多信息。所以,如果您将关键字分隔符更改为其他内容,则这不是关键字,它可以正常工作。:)
工作示例:

SELECT ua.id            AS ua_id, 
       ua.activity_time AS ua_activity_time, 
       ua.user_id       AS ua_user_id, 
       ua.charter_id    AS ua_charter_id, 
       'table'          AS ua_table_name, 
       Concat(Round(Timestampdiff(minute, ua.activity_time, Now()) / 30, 0), '-' , ua.charter_id)   AS test_delimiter 
FROM   user_activity_charter_update AS ua 
WHERE  ua.activity_time BETWEEN '2018-07-10 00:00:00' AND '2018-08-10 00:00:00';
7cwmlq89

7cwmlq892#

在第一张图片中,您只选择了一个查询的一部分,所以当您尝试执行查询时,实际上您只尝试执行所选的部分。这就是错误的原因。

相关问题