Ошибка 1064 в mariadb 10.3.15, но не в mysql ver 5.5.62
Я надеялся, что кто-то сможет указать, какая часть запроса mysql может вызывать синтаксическую ошибку.
Этот запрос работал на нашем предыдущем сервере под управлением mysql 5.5.62, но теперь показывает ошибку в версии mariadb 10.3.15
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_sku = ' w '
AND p.product_publish = 'Y'
LIMIT 0,10
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_name LIKE ' w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE (p.product_name LIKE '% w %')
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_sku LIKE 'w%'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_desc LIKE '% w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_s_desc LIKE '% w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE ((p.product_name LIKE '%w%'))
AND p.product_publish = 'Y'
LIMIT 0,10
)
Я надеюсь, что запрос будет выполнен успешно, но он выдаст ошибку 1064 - у вас ошибка в синтаксисе SQL...
1 ответ
Вы можете использовать LIMIT
только в последнем подзапросе UNION
, Может быть, MySQL [ошибочно] позволяет вам выполнить этот запрос, но MariaDB отклоняет его.
Решение? Просто заключите первый запрос в скобки, как в:
( -- enclosing parenthesis
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_sku = ' w '
AND p.product_publish = 'Y'
LIMIT 0,10
) -- enclosing parenthesis
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_name LIKE ' w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE (p.product_name LIKE '% w %')
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_sku LIKE 'w%'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_desc LIKE '% w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE p.product_s_desc LIKE '% w %'
AND p.product_publish = 'Y'
LIMIT 0,10
)
UNION
(
SELECT p.product_id
,p.product_name
,p.product_thumb_image
FROM jos_vm_product AS p
WHERE ((p.product_name LIKE '%w%'))
AND p.product_publish = 'Y'
LIMIT 0,10
)
Примечание: пожалуйста, учтите, что LIMIT
ряды без ORDER
их выбор может привести к случайной фильтрации. Это то, что вы хотите?