gpt4 book ai didi

Mysql:根据更新条件更改设置列?

转载 作者:行者123 更新时间:2023-11-30 22:49:31 24 4
gpt4 key购买 nike

我正在尝试找出更新表中两个字段之一的最佳方法。我有一个 personrelationship 表,它链接两个人,我希望每个人都能够在他们的端设置关系类型。

人际关系表

id int
user1_id int
user2_id int
user1_reltype /* boss, manager, etc */
user2_reltype

根据当前用户是表中的 user1_id 还是 user2_id,我需要相应地更新 user_reltype。所以基本上,如果当前用户 ID 在 user1_id 字段中,则更新 user1_reltype,否则更新 user2_reltype。

最佳答案

既然你希望每个用户能够独立管理他们的一半关系,你可以简化你的表结构

--------------------------------------
| initiator_id | reltype | target_id |

当 ID 为 5 的人(“发起者”)将 ID 为 9 的人(“目标”)标记为 friend 时,该表将包含:

---------------------------------------
| initiator_id | reltype | target_id |
+--------------+----------+-----------+
| 5 | 'friend' | 9 |

如果人 9 稍后发起与人 5 的“老板”连接,则可以在不干扰人 5 先前创建的行的情况下创建条目:

--------------------------------------
| initiator_id | reltype | target_id |
+--------------+---------+_----------+
| 9 | 'boss' | 5 |

这种方法将使您的表格易于阅读,查询也易于编写。

额外:

如果您还没有,请考虑创建另一个表来跟踪关系类型('reltype'):

-----------------
| id | type |
+----+----------+
| 1 | 'friend' |
| 2 | 'boss' |

并将关系表中的字符串 reltype's 替换为外键。

---------------------------------------
| initiator_id | reltype | target_id |
+--------------+----------+-----------+
| 5 | 1 | 9 |
| 9 | 2 | 5 |

关于Mysql:根据更新条件更改设置列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28566001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com