0

随着我的应用程序的扩展,我现在正在更改数据库的结构;我现在想控制数据库中的文件类型。我想从数据库中已有的当前文件类型开始。我的数据库现在有一个 [simplified] 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 行?

4

2 回答 2

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
于 2012-10-08T14:48:53.250 回答
1

你只想填充表格 - 不更新那里的任何东西(特别是因为什么都不存在)

INSERT INTO tblFileType(typeName )
SELECT DISTINCT fileType FROM tblFiles
于 2012-10-08T15:07:33.890 回答