0

次のコードを使用して、post_title列の最初の単語を削除して列を更新しようとしています。

UPDATE wp_posts 
SET post_title = (
SELECT SUBSTRING(post_title, LOCATE(' ', post_title)+1) as post_title
FROM wp_posts
WHERE post_type = 'post');

このコードだけを使用する場合

SELECT SUBSTRING(post_title, LOCATE(' ', post_title)+1) as post_title
FROM wp_posts
WHERE post_type = 'post';

エラーは発生せず、すべてが更新されたすべての行のリストが表示されますが、テーブルに戻ると、実際には何も更新されていません。これは、すべての行か何かを選択するだけだからだと思います。そのため、更新コードを試しましたが、機能せず、次のエラーが発生します

You can't specify target table 'wp_posts' for update in FROM clause

誰かが私のコードの何が問題になっているのか教えてもらえますか

4

2 に答える 2

1

the following should work.

UPDATE wp_posts SET post_title = SUBSTRING(post_title, LOCATE(' ', post_title)+1) WHERE post_type = 'post';
于 2013-02-24T09:48:24.220 に答える
0
UPDATE  wp_posts a
        INNER JOIN wp_posts b
            ON a.post_type = b.post_type
SET     a.post_title = SUBSTRING(b.post_title, LOCATE(' ', b.post_title) + 1)
WHERE   b.post_type = 'post'
于 2013-02-24T09:47:49.923 に答える