繁体   English   中英

从一个表中选择并插入另一个表; 使用WHERE&AND

[英]SELECT FROM one table and INSERT INTO another; using WHERE & AND

INSERT INTO tblPubInfo i (img_name)
SELECT f.img_name
FROM tblPubFiles f 
WHERE f.img_name<>''
AND f.pub_uid = i.uid

这是我正在尝试做的事情,但这给我一个错误。 它有什么问题以及如何解决?

您正在以您的条件(i.uid)引用目标表。 不允许这样做,因为它没有出现在表中(from子句)。

不提供错误,很难为您提供帮助。

但是,如果您的数据库是MySQL,

MySQL不支持INSERTS上的ALIAS

插入tblPubInfo i(img_name)

应该:

插入到tblPubInfo(img_name)

看这里:

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

那不应该是:

INSERT INTO tblPubInfo (img_name)
SELECT f.img_name
FROM tblPubFiles f, tblPubInfo i
WHERE f.img_name<>''
AND f.pub_uid = i.uid

似乎您正在尝试使用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
                 )

您需要在Select子句中连接两个表,以便对表tblPubInfo使用别名i ,例如:

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 <> ''

尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM