我最近将应用程序从MySQL 5.5迁移到了MariaDB 10.3。 该应用程序的一部分是事件日历,用户可以在其中输入自己的事件,其中包括地址,城镇等详细信息。
我注意到运行该软件的查询之一不再适用于MariaDB,尽管语法仍然可以。
我试图回到MySQL 5.5,查询再次起作用。 我还在MariaDB 10.3上的phpMyadmin中运行了查询,它显示了相同的结果,但以错误结尾:
错误1064:您的SQL语法有错误;检查手册 在'UNION SELECT CONCAT(title_clang_1,')附近使用的正确语法- ',street,'',zip,'',district,'',town,in line 1
这是查询:
SELECT
'choose' label,
'' id
FROM
table_events
LIMIT
1
UNION
SELECT
CONCAT(
title_clang_1,
' - ',
street,
' ',
zip,
' ',
district,
' ',
town,
' ',
additional
) label,
id
FROM
table_events
WHERE
offline IS NULL || offline = '|0|'
“ table_events”表包含此处列出的所有列:id,title_clang_1,街道,邮政编码,地区,城镇,其他-以及与此查询无关的其他列。
我希望脱机字段填充为零或NULL的所有事件的输出,而是出现语法错误。
答案 0 :(得分:3)
我很确定您的查询也不会在MySQL中起作用(至少在新版本中)。 MySQL Documentation明确指出:
要将ORDER BY或LIMIT应用于单个SELECT,请放置子句 在包围SELECT的括号内
您需要在各个GL_CONTEXT_FLAG_NO_ERROR_BIT
查询块周围使用括号,就像在第一个查询中使用SELECT
一样:
LIMIT