MySQL查询需求:获取T2全量记录及T1中is_valid为false的关联记录
MySQL 查询:合并T2全量记录与T1无效设备记录
需求说明
现有两张列结构不同的表T1和T2,二者共享transaction_id、device_id字段:
T1包含is_valid字段(1表示有效,0表示无效),存储有效与无效设备记录T2仅存储有效设备记录,无is_valid字段
需要编写查询语句,获取T2的全部记录,以及T1中is_valid=0的记录,最终结果需包含transaction_id、device_id、is_valid、description、status、store_id字段。
实现SQL语句
-- 合并T2全量有效记录与T1无效记录,支持按transaction_id筛选 SELECT transaction_id, device_id, 1 AS is_valid, 'valid device' AS description, 'Success' AS status, store_id FROM T2 WHERE transaction_id = '123' -- 可替换为目标transaction_id或去掉该条件查询全部 UNION ALL SELECT transaction_id, device_id, is_valid, 'Device doesn''t exist' AS description, 'Failed' AS status, store_id -- 若T1无store_id字段,可替换为NULL或对应默认值 FROM T1 WHERE is_valid = 0 AND transaction_id = '123'; -- 与上方筛选条件保持一致
语句说明
- 使用
UNION ALL而非UNION,避免自动去重(保留结果集中的重复记录,匹配示例输出) - 对
T2补全缺失字段:硬编码is_valid=1、description='valid device'、status='Success' - 对
T1筛选is_valid=0的记录,对应设置description和status字段 - 可根据需求调整
WHERE子句中的transaction_id值,或移除该条件查询所有符合要求的记录
内容的提问来源于stack exchange,提问作者Anil Nivargi
相关产品推荐
相关产品推荐

