UNION SELECT CONCAT在MariaDB / MySQL

时间:2019-06-30 11:20:28

标签: mysql database mariadb concat

我最近将应用程序从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的所有事件的输出,而是出现语法错误。

1 个答案:

答案 0 :(得分:3)

我很确定您的查询也不会在MySQL中起作用(至少在新版本中)。 MySQL Documentation明确指出:

  

要将ORDER BY或LIMIT应用于单个SELECT,请放置子句   在包围SELECT的括号内

您需要在各个GL_CONTEXT_FLAG_NO_ERROR_BIT查询块周围使用括号,就像在第一个查询中使用SELECT一样:

LIMIT