我有两张桌子。第一个表是Requests,它看起来像这个
+------------------------------+
| Requests |
+----+-------------+-----------+
| id | user_from | user_to |
+----+-------------+-----------+
| | | |
| | | |
| | | |
| | | |
+----+-------------+-----------+
当请求已发送且其他用户已接受时,他们会从请求表移动到朋友表中,因为他们知道他们现在确实是朋友。
这是我的朋友表:
+--------------------------------+
| Friends |
+----+-------------+-------------+
| id | user_id | friend_id |
+----+-------------+-------------+
| | | |
| | | |
| | | |
| | | |
+----+-------------+-------------+
现在我的问题是,我如何“移动”(一旦请求被接受)请求表中的数据到朋友表?
如果我想执行此操作,SQL查询将如何显示?
答案 0 :(得分:2)
SQL没有'move'命令。只有插入和删除。你想要使用一个交易:
start transaction;
insert into friends ...
delete from requests ...
commit;
答案 1 :(得分:1)
你根本不“移动”它。你插入一个,并从另一个删除。在事务中执行以确保它以原子方式发生。
答案 2 :(得分:1)
INSERT INTO
查询后跟DELETE FROM
查询?如果你有Requests.id
,就像
INSERT INTO Friends (user_id, friend_id) SELECT Requests.user_id, Requests.friend_id FROM Requests WHERE Requests.id = $Your_ID;
DELETE FROM Requests where id = $Your_ID
答案 3 :(得分:1)
添加另一个名为accepted
的列,该列最初为false。
+-------------------------------------------+
| Friends |
+----+-------------+-------------+----------+
| id | user_id | friend_id | accepted |
+----+-------------+-------------+----------+
| | | | |
| | | | |
| | | | |
| | | | |
+----+-------------+-------------+----------+
现在您无需移动任何内容 - 只需将字段更新为TRUE
。
答案 4 :(得分:0)
我如何“移动”(一旦请求被接受)来自THE的数据 申请表到朋友表???
通过在请求表上执行DELETE并在friends表中执行INSERT。实际上,您可能希望执行两个插入,并使角色反转,以使查询更简单。