Я перемещаю свою базу данных MySQL между хостинговыми компаниями. Старый использует MySQL 5.6.36-82.1, а новый использует MariaDB (не уверен в версии, но говорят, что она самая последняя)
В одном из представлений есть два выбора UNIONed вместе. Каждый выбор создает один и тот же псевдоним столбца одного столбца, который затем используется вне объединения как ORDER BY. Псевдоним создается непосредственно перед FROM в каждом SELECT.
Это нормально работает в MySQL, но компания заявляет, что не может перенести резервную копию DB SQL в MariaDB, поскольку жалуется, что псевдоним в Предложение ORDER BY - это столбец, который не существует. Это известная ошибка MariaDB. ie вы не можете использовать псевдонимы столбцов в ORDER BY?
Код представления приведен ниже на случай, если это поможет, и это ORDER BY jointmember_sn
, о котором говорят, что он возражает.
DELIMITER $$
ALTER ALGORITHM =
TEMPTABLE DEFINER = themam54_sitka @82.71.38.7 SQL SECURITY DEFINER VIEW member_and_joint_member AS
(SELECT
member.member_id AS member_id,
IFNULL(member.member_title, '') AS member_title,
(
CASE
WHEN (
member.member_known_as IS NOT NULL
)
THEN CONCAT(
member.member_fn_1,
' (',
member.member_known_as,
')'
)
ELSE member.member_fn_1
END
) AS member_fn,
member.member_sn AS member_sn,
member_1.member_id AS joint_member_id,
IFNULL(member_1.member_title, '') AS joint_member_title,
(
CASE
WHEN (
member_1.member_known_as IS NOT NULL
)
THEN CONCAT(
member_1.member_fn_1,
' (',
member_1.member_known_as,
')'
)
ELSE member_1.member_fn_1
END
) AS joint_member_fn,
member_1.member_sn AS joint_member_sn
FROM
(
(
joint_member
JOIN member
ON (
(
joint_member.base_member_id = member.member_id
)
)
)
JOIN member member_1
ON (
(
joint_member.partner_member_id = member_1.member_id
)
)
)
ORDER BY member_sn)
UNION
ALL
(SELECT
member_1.member_id AS member_id,
IFNULL(member_1.member_title, '') AS member_title,
(
CASE
WHEN (
member_1.member_known_as IS NOT NULL
)
THEN CONCAT(
member_1.member_fn_1,
' (',
member_1.member_known_as,
')'
)
ELSE member_1.member_fn_1
END
) AS member_fn,
member_1.member_sn AS member_sn,
member.member_id AS joint_member_id,
IFNULL(member.member_title, '') AS joint_member_title,
(
CASE
WHEN (
member.member_known_as IS NOT NULL
)
THEN CONCAT(
member.member_fn_1,
' (',
member.member_known_as,
')'
)
ELSE member.member_fn_1
END
) AS joint_member_fn,
member.member_sn AS joint_member_sn
FROM
(
(
joint_member
JOIN member
ON (
(
joint_member.base_member_id = member.member_id
)
)
)
JOIN member member_1
ON (
(
joint_member.partner_member_id = member_1.member_id
)
)
)
ORDER BY jointmember_sn) $$
DELIMITER;