这与此question不重复。我希望垂直交换值,而在其他问题交换是水平的。
我有桌子产品:
id | holder_id
---------------
1 | 2
2 | 2
3 | 13
4 | 13
5 | 1
6 | 12
7 | 16
8 | 20
--------------
其中holder_id是对用户ID的引用。 和表格对话:
id | user1 | user2 | product1 | product2
-------------------------------------------------------
..
2 | 12 | 2 | 6 | 2
我想要的是通过会话ID为两个产品交换holder_id的单个语句。因此,对于会话ID 2,它应该如下所示:
id | holder_id
---------------
1 | 2
2 | 12
3 | 13
4 | 13
5 | 1
6 | 2
7 | 16
8 | 20
--------------
所以现在交换了id 2和6的holder_id。
我试过了:
UPDATE products as p
INNER JOIN conversations as c
ON p.id=c.product1
SET p.holder_id=c.user2
WHERE c.id=2;
并且由此我管理两个人这样做:
id | holder_id
---------------
1 | 2
2 | 2 //still have to change this
3 | 13
4 | 13
5 | 1
6 | 2 // changed this
7 | 16
8 | 20
--------------
现在我必须在另一张桌子上加入,我无法理解如何做到这一点。