多条件关联两张表遇SQL语法错误,求正确实现方法
关联两张表的正确SQL写法
你的核心问题是SQL语句结构错误:JOIN子句必须放在FROM和WHERE之间,不能将WHERE条件写在JOIN前面,同时子查询语法也存在问题。以下是两种直接关联的正确写法:
写法一:JOIN后统一添加过滤条件
直接将两张表的过滤条件整合到WHERE子句中,逻辑清晰直观:
SELECT t.`ID`, t.`Serial Number`, o.`24V Supply (V)` FROM `Test Results` t JOIN `Test 3 Output` o ON t.`ID` = o.`ID` WHERE LEN(t.`Serial Number`) = 16 AND t.FailMode = '24V Supply FAIL' AND o.`24V Supply (V)` < 30
写法二:用子查询预过滤目标表
先筛选出Test 3 Output中符合条件的记录,再和Test Results关联,和你之前两个单独查询的逻辑完全匹配:
SELECT t.`ID`, t.`Serial Number`, o.`24V Supply (V)` FROM `Test Results` t JOIN ( SELECT `ID`, `24V Supply (V)` FROM `Test 3 Output` WHERE `24V Supply (V)` < 30 ) o ON t.`ID` = o.`ID` WHERE LEN(t.`Serial Number`) = 16 AND t.FailMode = '24V Supply FAIL'
补充说明:
- 两种写法均可得到你需要的「ID、序列号、测试值」结果集;
- 如果需要保留
Test Results中符合条件但Test 3 Output无匹配的记录,可将JOIN替换为LEFT JOIN; - SQL的执行逻辑是
FROM→JOIN→WHERE→SELECT,必须严格遵循这个顺序,你的原写法颠倒了WHERE和JOIN的位置,导致语法错误。
内容的提问来源于stack exchange,提问作者smao
相关产品推荐
相关产品推荐

