1

ここで同じ質問ではないにしても非常によく似た質問を見てきましたが、次のクエリをUPDATEステートメントに変換しようとして失敗しました。

SELECT table.* FROM table JOIN (
  SELECT   column, COUNT(*) AS rank
  FROM     table
  GROUP BY column
) AS t USING (column) WHERE t.rank = 1
ORDER BY t.rank DESC

上記のクエリを使用して選択したすべての結果の列を更新したいと思います。

これを更新ステートメントに変換するにはどうすればよいですか?

ありがとうございました。

4

3 に答える 3

2

これはそれを行う必要があります:

update table
set column = 'somevalue'
where id in
(select id from (

SELECT table.* FROM table JOIN (
  SELECT   column, COUNT(*) AS rank
  FROM     table
  GROUP BY column
) AS t USING (column) WHERE t.rank = 1) x)
于 2012-05-25T13:46:47.483 に答える
0
INSERT INTO table (id, value)
SELECT table.id, table.value
FROM table
JOIN (
  SELECT   column, COUNT(*) AS rank
  FROM     table
  GROUP BY column
) AS t USING (column)
WHERE t.rank = 1
ORDER BY t.rank DESC
ON DUPLICATE KEY UPDATE value = VALUES(value)

救助のために複製に挿入してください!

基本的に、これにより、通常どおり SELECT を実行してから、INSERT INTO を先頭に追加し、ON DUPLICATE を追加できます。

このクエリは作り物だと思いますが、同じ列をフィルタリングして並べ替える意味は何ですか?

于 2012-05-25T14:07:33.840 に答える
0

完全にはわかりませんが、次のようなものだと思います

update tblname set columname = value where tblname.columncompare = (select statement)
于 2012-05-25T13:47:31.203 に答える