SQL:连接两个表(LEFT OUTER JOIN)然后更新值

时间:2012-08-24 12:52:06

标签: mysql sql-update sql

我试图根据另一个表中的值更新一列中的值。

如果列全部在同一个表中,我可以这样做:

UPDATE wp_posts 
SET post_date = REPLACE (post_date, 'X', 'Y') 
WHERE meta_value = 'Z';

但是我需要先加入两个表才能更新:

SELECT * 
FROM wp_posts 
LEFT OUTER JOIN wp_postmeta ON post_id = post_id

如何根据我加入的两个表进行更新?

3 个答案:

答案 0 :(得分:5)

如果您使用 SQL Server

,请尝试这种方式
UPDATE WP
SET WP.post_date = REPLACE(WPM.post_date, 'X', 'Y') 
FROM wp_posts WP 
   LEFT OUTER JOIN wp_postmeta WPM ON WP.post_id = WPM.post_id
WHERE WP.meta_value = 'Z';

<强>更新

如果您使用的是 MySQL 。这是 MySQL

的更新
UPDATE wp_posts WP 
   LEFT JOIN wp_postmeta WPM ON WP.post_id = WPM.post_id
SET WP.post_date = REPLACE(WPM.post_date, 'X', 'Y') 
WHERE meta_value = 'Z';

答案 1 :(得分:0)

SQL Server

UPDATE wp_posts 
post_date = REPLACE (post_date, 'X', 'Y')
FROM wp_posts WP LEFT OUTER JOIN wp_postmeta WPM ON WP.post_id = WPM.post_id
WHERE meta_value = 'Z';

<强>的MySQL

UPDATE wp_posts 
LEFT JOIN wp_postmeta WPM ON WP.post_id = WPM.post_id 
SET post_date = REPLACE (post_date, 'X', 'Y')
WHERE meta_value = 'Z'

答案 2 :(得分:-1)

 UPDATE wp_posts SET post_date = REPLACE (WPM.post_date, 'X', 'Y')
 FROM wp_posts AS WP
 LEFT OUTER JOIN wp_postmeta AS WPM ON WP.post_id = WPM.post_id
 WHERE WP.meta_value = 'Z'