如何在MySQL中交换单列的两个值?

时间:2016-11-29 20:31:13

标签: php mysql

这与此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  
--------------

现在我必须在另一张桌子上加入,我无法理解如何做到这一点。

0 个答案:

没有答案