0

我正在尝试更新表,但我需要进行左连接以确定要选择哪些行。

这是我一直在尝试的两个例子,我认为通过看到它们中的任何一个我想很清楚我想要做什么:

   UPDATE `User_Likes` 
      SET `Status` = 'read'
LEFT JOIN Posts ON User_Likes.PID = Posts.ID
    WHERE Posts.UID = '1'

在这里我尝试另一种方式:

UPDATE `User_Likes` 
   SET `Status` = 'read' 
 WHERE `ID` IN (SELECT Posts.ID
                  FROM `User_Likes`
             LEFT JOIN Posts ON User_Likes.PID = Posts.ID
                 WHERE Posts.UID = '$userID')
4

3 回答 3

0

看看这个例子

UPDATE User_Likes
LEFT JOIN
Posts ON User_Likes.PID = Posts.ID 
SET Status='read'
WHERE Posts.UID = '1' ;

SQL 小提琴演示

于 2012-09-25T04:22:21.543 回答
0

您的查询的问题是 Id 只需要一个 Id,而您的 select 语句返回多个 ID。所以:

UPDATE `User_Likes` 
   SET `Status` = 'read'
FROM `User_Likes`
LEFT JOIN Posts ON User_Likes.PID = Posts.ID
WHERE Posts.UID = '$userID'

像这样的东西。。

于 2012-09-25T04:31:19.430 回答
0
UPDATE `User_Likes` u LEFT JOIN Posts p 
ON u.User_Likes.PID = p.Posts.ID
SET `Status` = 'read'
WHERE p.Posts.UID = '1'
于 2012-09-25T06:26:32.403 回答