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

如何用SQL从关联表填充hotel_consent_language_code的hotel_uid列?

填充hotel_uid列及数据验证方案

一、填充hotel_uid列的SQL语句

使用UPDATE结合表关联,将hotel_consent表中的对应hotel_uid批量更新到hotel_consent_language_code表:

UPDATE hotel_consent_language_code lc
SET hotel_uid = hc.hotel_uid
FROM hotel_consent hc
WHERE lc.hotel_consent_key = hc.key;

该语句通过hotel_consent_key与key列的匹配关系,完成数据的对应填充。

二、确保数据无匹配错误的验证步骤

为避免填充后出现数据缺失或不一致问题,需在执行更新前后完成以下检查:

1. 检查目标表中无匹配的行

执行以下查询,确认hotel_consent_language_code中所有hotel_consent_key都能在hotel_consent中找到对应记录:

SELECT lc.hotel_consent_key
FROM hotel_consent_language_code lc
LEFT JOIN hotel_consent hc ON lc.hotel_consent_key = hc.key
WHERE hc.key IS NULL;

若返回结果,说明这些hotel_consent_key在hotel_consent中无对应数据,需先补充数据或清理无效行,否则更新后会违反hotel_uid的非空约束。

2. 检查关联表的键值唯一性

执行以下查询,确认hotel_consent中同一个key仅对应唯一的hotel_uid:

SELECT key, COUNT(DISTINCT hotel_uid) AS uid_count
FROM hotel_consent
GROUP BY key
HAVING COUNT(DISTINCT hotel_uid) > 1;

若返回结果,说明同一个key关联了多个不同的hotel_uid,需先清理数据保证键值对应关系唯一,否则更新后会导致同一hotel_consent_key对应不同hotel_uid,影响后续复合主键的创建。

3. 更新后验证

执行更新语句后,再次检查所有行的hotel_uid是否已填充:

SELECT *
FROM hotel_consent_language_code
WHERE hotel_uid IS NULL;

若无返回结果,说明所有行已成功填充hotel_uid,可继续创建三列的复合主键。

内容的提问来源于stack exchange,提问作者Vishwa Bhat

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:30:44