SQL Server:向LookupTable插入唯一国家记录的语法问题求助
正确的SQL插入写法
你的报错是因为DISTINCT的语法使用错误——DISTINCT是作用于整个查询结果集的关键字,不能单独修饰单个列。以下是两种可行的修正方案:
方案一:直接在主查询中使用DISTINCT
INSERT INTO LookupTable (LookupAttribute, LookupDisplayValue, LookupActualValue) SELECT DISTINCT 'Region', country, country FROM UserTable WHERE country IS NOT NULL AND country != '' ORDER BY country;
这里DISTINCT会确保返回的每一行(固定值'Region' + 国家名 + 国家名)都是唯一的,符合你插入唯一国家记录的需求。
方案二:通过子查询先获取唯一国家列表
INSERT INTO LookupTable (LookupAttribute, LookupDisplayValue, LookupActualValue) SELECT 'Region', country, country FROM ( SELECT DISTINCT country FROM UserTable WHERE country IS NOT NULL AND country != '' ) AS UniqueCountries ORDER BY country;
这种写法先通过子查询筛选出所有非空且唯一的国家值,再将固定字段与这些值组合后插入,逻辑更清晰,适合复杂场景下的可读性维护。
内容的提问来源于stack exchange,提问作者Venkat
相关产品推荐
相关产品推荐

