SQL INSERT语句报Msg 102错误:逗号附近语法错误求助
错误分析与修正方案
核心问题拆解
- INSERT目标列语法错误:
INSERT INTO PATIENTF后的列列表里,P.PATID是错误写法——目标表的列名不需要加源表别名,直接写PATID即可。 - SELECT子句多余括号:
SELECT (PGID, P.PATID, PREFERREDPRONOUNS)里的括号不符合SQL语法规范,SELECT指定列只需用逗号分隔,无需包裹括号。 - 逻辑冗余:LEFT JOIN后添加
WHERE F.PATID = P.PATID,等价于直接使用INNER JOIN,后者写法更清晰高效。
修正后的SQL语句
INSERT INTO PATIENTF (PGID, PATID, PREFERREDPRONOUNS) SELECT P.PGID, P.PATID, P.PREFERREDPRONOUNS FROM PATIENT P INNER JOIN PATIENTF F ON F.PATID = P.PATID
补充说明
如果需要避免后续重复插入相同数据,可以进一步扩展为带存在性校验的写法:
INSERT INTO PATIENTF (PGID, PATID, PREFERREDPRONOUNS) SELECT P.PGID, P.PATID, P.PREFERREDPRONOUNS FROM PATIENT P WHERE EXISTS ( SELECT 1 FROM PATIENTF F WHERE F.PATID = P.PATID )
内容的提问来源于stack exchange,提问作者C4KAT2000
相关产品推荐
相关产品推荐

