INSERT INTO tblPubInfo i (img_name)
SELECT f.img_name
FROM tblPubFiles f
WHERE f.img_name<>''
AND f.pub_uid = i.uid
这是我想要做的,但它给了我一个错误。它有什么问题以及如何解决它?
答案 0 :(得分:4)
您正在以条件(i.uid)引用目标表。 这是不允许的,因为它没有出现在表中(来自子句)。
答案 1 :(得分:4)
在没有提供错误的情况下帮助您有点困难。
但是,如果您的数据库是MySQL,
INSERT INTO tblPubInfo i(img_name)
应该是:
INSERT INTO tblPubInfo(img_name)
见这里:
答案 2 :(得分:1)
不应该是:
INSERT INTO tblPubInfo (img_name)
SELECT f.img_name
FROM tblPubFiles f, tblPubInfo i
WHERE f.img_name<>''
AND f.pub_uid = i.uid
答案 3 :(得分:1)
好像您正在尝试使用insert into语句更新记录。这不起作用。使用以下内容:
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
)
答案 4 :(得分:0)
您需要加入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 <> ''
答案 5 :(得分:0)
试试这个:
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