ВЫБЕРИТЕ из одной таблицы и вставьте в другую;используя ГДЕ И И - PullRequest
1 голос
/ 16 февраля 2012
INSERT INTO tblPubInfo i (img_name)
SELECT f.img_name
FROM tblPubFiles f 
WHERE f.img_name<>''
AND f.pub_uid = i.uid

это то, что я пытаюсь сделать, но это дает мне ошибку.Что с ним не так и как это исправить?

Ответы [ 6 ]

4 голосов
/ 16 февраля 2012

Немного сложно помочь без указания ошибки.

Однако, если ваша база данных MySQL,

MySQL не поддерживает ALIAS для INSERTS

INSERT INTO tblPubInfo i (img_name)

должно быть:

INSERT INTO tblPubInfo (img_name)

см. Здесь:

http://dev.mysql.com/doc/refman/5.1/en/insert.html

4 голосов
/ 16 февраля 2012

Вы ссылаетесь на целевую таблицу в вашем состоянии (i.uid). Это недопустимо, поскольку оно не отображается в таблицах (из условия).

1 голос
/ 16 февраля 2012

Похоже, вы пытаетесь обновить записанное с помощью вставки в утверждение.Это не работаетИспользуйте следующее:

UPDATE tblPubInfo i
SET i.img_name = ( SELECT f.img_name 
                   FROM   tblPubFiles f 
                   WHERE  f.img_name is not null 
                   AND    f.pub_uid = i.uid
                 )
1 голос
/ 16 февраля 2012

Разве это не должно быть:

INSERT INTO tblPubInfo (img_name)
SELECT f.img_name
FROM tblPubFiles f, tblPubInfo i
WHERE f.img_name<>''
AND f.pub_uid = i.uid
0 голосов
/ 16 февраля 2012

попробуйте это:

INSERT INTO tblPubInfo (img_name) 
SELECT a.img_name
FROM   tblPubFiles a INNER JOIN tblPubInfo b ON a.pub_uid = b.uid
WHERE  CHAR_LENGTH(TRIM(a.img_name)) > 0
0 голосов
/ 16 февраля 2012

Вам необходимо объединить две таблицы в предложении Select, чтобы использовать псевдоним i для таблицы tblPubInfo, например:

INSERT INTO tblPubInfo (img_name) 
SELECT f.img_name
FROM tblPubFiles f 
inner join tblPubInfo i on f.pub_uid = i.uid
WHERE f.img_name <> ''
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...