You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对比数据库表数据并设置ismatching变量

解决方案

表结构说明

registration表

实际包含字段:RegistratonId、Contact_Id、CommunicationId、Remark,修正语法错误后的建表语句:

CREATE TABLE registration 
(
    Id INT NOT NULL AUTO_INCREMENT, -- 对应RegistratonId
    CONT_ID NUMBER(10,0), -- 对应Contact_Id
    COMM_ID NUMBER(10,0) NULL, -- 对应CommunicationId,允许为空
    Remark VARCHAR(255),
    PRIMARY KEY(Id)
);

Contact表

结构:

ContactIDFirstNameLastName

建表语句:

CREATE TABLE Contact 
(
    Id INT NOT NULL AUTO_INCREMENT, -- 对应ContactID
    FirstName CHAR(30 BYTE),
    LastName CHAR(30 BYTE),
    PRIMARY KEY(Id)
);

Communication表

结构:

CommunicationIdFirstNameLastName

建表语句:

CREATE TABLE Communication 
(
    Id INT NOT NULL AUTO_INCREMENT, -- 对应CommunicationId
    FirstName CHAR(30 BYTE),
    LastName CHAR(30 BYTE),
    PRIMARY KEY(Id)
);

需求实现SQL

针对指定的RegistrationId,可通过以下查询直接获取ismatching状态:

-- 替换@target_reg_id为你要查询的具体RegistrationId值
SELECT 
    CASE
        WHEN r.CommunicationId IS NULL THEN TRUE
        WHEN c.FirstName = com.FirstName AND c.LastName = com.LastName THEN TRUE
        ELSE FALSE
    END AS ismatching
FROM registration r
LEFT JOIN Contact c ON r.Contact_Id = c.ContactID
LEFT JOIN Communication com ON r.CommunicationId = com.CommunicationId
WHERE r.RegistratonId = @target_reg_id;

逻辑说明

  • 用LEFT JOIN保证即使CommunicationId为空,查询仍能正常返回结果
  • 通过CASE分支判断触发条件:
    1. 若CommunicationId为null,直接返回TRUE
    2. 若关联的Contact与Communication表中FirstName和LastName完全匹配,返回TRUE
    3. 不满足以上条件时返回FALSE

内容的提问来源于stack exchange,提问作者soorya kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 10:35:02