0

アプリケーションが拡張するにつれて、データベースの構造を変更しています。データベース内のファイルタイプを制御したいと思います。すでにデータベースにある現在のファイルタイプから始めたいと思いました。私のデータベースには、次のような[簡略化された]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 に答える