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