Ошибка с добавлением SELECT внутри запроса VALUES - PullRequest
0 голосов
/ 06 ноября 2019

Когда я запускаю эту команду, она возвращает ошибку. Я указал все необходимые значения.

INSERT INTO ps_manufacturer (name, date_add, date_upd, active)
VALUES (
(SELECT name FROM prestashop_old.ps_category_lang WHERE id_lang='1' AND id_category IN (SELECT id_category FROM prestashop_old.ps_category WHERE id_parent='241')
,(CURRENT_TIMESTAMP)
,(CURRENT_TIMESTAMP)
,(2));

Ошибка:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 2)' at line 2

Может кто-нибудь помочь?

Спасибо,

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вы должны закрыть вторые скобки в этой строке:

(SELECT name 
 FROM prestashop_old.ps_category_lang 
 WHERE id_lang='1' 
 AND id_category IN (SELECT id_category 
                     FROM prestashop_old.ps_category 
                     WHERE id_parent='241'))

Для вашей новой ошибки попробуйте изменить это:

SELECT id_category 
FROM prestashop_old.ps_category 
WHERE id_parent='241'

Into:

SELECT max(id_category)
FROM prestashop_old.ps_category 
WHERE id_parent='241'

И проверьте результаты этого отдельного запроса, чтобы увидеть, вот что вы хотите получить ... Или, может быть, это неправильный выбор, к которому я стремлюсь ... хорошо ...

0 голосов
/ 06 ноября 2019

Я думаю, что этот синтаксис может сработать, но вы бы исправили опечатку, замеченную В.Бокшичем.

Но еще лучше, используйте вместо этого синтаксис insert ... select. Это более читабельно и безопаснее, если когда-либо ваш подзапрос вернет более одной строки (в этом случае синтаксис insert ... values() потерпит неудачу).

INSERT INTO ps_manufacturer (name, date_add, date_upd, active)
SELECT 
    name,
    CURRENT_TIMESTAMP,
    CURRENT_TIMESTAMP,
    2
FROM prestashop_old.ps_category_lang 
WHERE 
    id_lang='1' 
    AND id_category IN (
        SELECT id_category FROM prestashop_old.ps_category WHERE id_parent='241'
    )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...