gpt4 book ai didi

MySQL IF Case Exists 检查用户是否已附加

转载 作者:行者123 更新时间:2023-11-29 19:11:18 25 4
gpt4 key购买 nike

您好,我需要用户能够通过输入唯一的案例代码来注册对案例表中案例的访问权限。数据库需要检查案例代码是否存在,以及是否使用其 id 来查看用户是否已注册

cases
+----+-----------+-------------+
| id | case_code | case_name |
+----+-----------+-------------+
| 1 | THEC12C | Test Case 1 |
| 2 | ABCD23A | Test Case 2 |
+----+-----------+-------------+

case_creditors
+----+---------+-------------+
| id | case_id | creditor_id |
+----+---------+-------------+
| 1 | 1 | 3 |
| 2 | 2 | 1 |
+----+---------+-------------+

因此,如果债权人 1 尝试添加 THEC12C,它将向案例用户添加一条记录

case_creditors
+----+---------+-------------+
| id | case_id | creditor_id |
+----+---------+-------------+
| 1 | 1 | 3 |
| 2 | 2 | 1 |
| 3 | 1 | 1 |
+----+---------+-------------+

如果他们尝试再次添加相同的案例,它将返回一行,以便我可以告诉 php 该用户已经注册了此案例

我知道我可以使用两个查询来完成此任务1) 案例代码是否存在于案例表中 - true/False2) 如果为 true,case_creditors 中是否有记录 - true/false3} 如果为 true,则“已注册;如果为 false,则将记录的 case_id 和 Creditor_id 添加到 case_creditors”

最佳答案

我会采取完全不同的方式。

  1. 创建单个 unique indexcase_creditors 表中的 case_idcreditor_id 字段上。这将防止插入重复记录。

  2. 使用以下insert ... select ...查询将数据插入case_creditors`表中。

如果返回时出现重复键错误,则案例已分配给债权人。如果受影响的行为 0,则 case_code 不存在。如果受影响的行为 1,则案例分配给债权人:

insert into case_creditors (case_id, creditor_id)
select id, ... from cases where case_code='...'

用债权人 ID 代替第一个 ...,用案例代码代替第二个 ...

关于MySQL IF Case Exists 检查用户是否已附加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058639/

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