如何使用SQL从主表选取列并按条件从第二张表取对应列
解决方案
你的需求可以通过LEFT JOIN(左连接)实现,原有写法存在两个核心问题:
- 使用逗号关联两张表属于隐式交叉连接,会生成两张表记录的笛卡尔积,完全不符合需求
- CASE语法使用错误,且不需要嵌套子查询实现该逻辑
正确查询语句(SQL Server 语法)
SELECT TOP (50) A.MessageID, A.UserID, B.MessageData FROM Message AS A LEFT JOIN Market AS B ON A.MessageID = B.MessageID
说明
- 左连接
LEFT JOIN会保留左表Message的所有符合条件的记录,当MessageID在右表Market中存在匹配记录时,MessageData返回对应的值,没有匹配时自动返回NULL,完全符合你的需求,无需额外写判断逻辑 - 如果你使用的是MySQL/PostgreSQL这类数据库,将
TOP (50)替换为LIMIT 50放在语句末尾即可
内容的提问来源于stack exchange,提问作者John D.
相关产品推荐
相关产品推荐

