0

我是 MySQL 语言的新手。我发现插入关系数据有些麻烦。我有一张用于存储用户友谊的表格。假设 user1(id =1) 和 user2(id =2) 是朋友。然后,我将信息存储在朋友表中,如下所示:

朋友表

user_id1 | user_id2
  1           2

但是,我的 php 文件中的某些操作可能会再次检查这两个用户的关系,然后插入/更新好友信息。

1) 使用 user_id1 检查用户,然后更新好友信息(使用 insert ON DUPLICATE KEY)。

INSERT INTO friend (user_id1, user_id2) VALUES ('1', '2') 
ON DUPLICATE KEY UPDATE user_id2=user_id2

朋友表仍然正确,因为没有任何更改:

朋友表

user_id1 | user_id2
  1           2

但是如果先从user2开始检查,则重新插入好友信息

朋友表

user_id1 | user_id2
  1      |    2
  2      |    1

是否有任何 SQL 语句可以防止这种情况发生?

感谢您的回答,对不起我的英语不好

4

1 回答 1

2

对于 SQL,它只是新数据,在这种情况下,1,2 实际上与 2,1 相同。我不知道这是否有一个 SQL 函数。但是在将它们发送到 SQL 之前检查 php 中的值可能是合适的。

不知道你的 PHP 代码,你可以尝试这样的事情

$data = array('user_id1' => 2, 'user_id2' = 1);
arsort($data); //now the lowest id is always first

$user_id1 = current($data);
$user_id2 = next($data);

//send to SQL

希望这可以引导您朝着正确的方向前进

于 2013-07-16T09:07:10.673 回答