使用SELECT结果更新查询

时间:2012-10-08 14:46:21

标签: mysql sql select sql-update

随着我的应用程序的扩展,我现在正在改变数据库的结构;我现在想要控制数据库中的文件类型。我想从数据库中已有的当前文件类型开始。我的数据库现在有一个[简化] 2表结构,如:

tbFiles: pkFileID, fileType, fileName

tblFileType: pkFileType, typeName, typeDesc

我正在尝试将SELECT查询更新的输出更新到新创建的tblFileType表中。我尝试过其他事情:

UPDATE tblFileType
INNER JOIN
(SELECT DISTINCT fileType FROM tblFiles) as X
SET typeName = fileType

但我似乎总是得到0 row(s) affected

当我跑步时

SELECT DISTINCT fileType
FROM  `tblFiles`

我得到Showing rows 0 - 22 (~23 total, Query took 0.0074 sec)

我知道这一定很简单,但为什么UPDATE查询不会影响23行?

2 个答案:

答案 0 :(得分:2)

您需要添加JOIN条件,如ON t1.fileType = x.fileType,如下所示:

UPDATE tblFileType t1
INNER JOIN
(
    SELECT DISTINCT fileType 
    FROM tblFiles
)as X ON t1.fileType = x.fileType
SET t1.typeName = X.fileType

更新:由于表格tblFileType为空,您需要使用INSERT之类的内容:

INSERT INTO tblFileType(typeName )
SELECT DISTINCT fileType 
FROM tblFiles
WHERE -- a condition here

答案 1 :(得分:1)

你只想填充表格 - 不要在那里更新任何东西(特别是因为还没有存在)

INSERT INTO tblFileType(typeName )
SELECT DISTINCT fileType FROM tblFiles