使用 Microsoft SQL Server 2008,假设有一个 table1 保存所选的省、区、公社和村庄的 ID。然后是表2,其中包含省、区、公社和村庄的ID和名称。省份和地区是必填字段,并且始终会被填满。公社和村庄可能会被填满,但甚至可能不会被填满,因为它们不是必需的。
在不知道公社和村庄的 id 是否填充在 table1 中的情况下,构建动态 SQL 语句的最佳方法是什么?
SELECT tbl1.province, tbl1.district, tbl1.commune, tbl1.village
FROM dbo.table1 AS tbl1
AND dbo.table2 AS tbl2
WHERE tbl1.province = tbl2.province_id
AND tbl1.district = tbl2.district_id
AND tbl1.commune = tbl2.commune_id
AND tbl1.village = tbl2.village_id
如果 table1 中的 id 未填充,则此语句会给出错误结果。
An OUTER JOIN
在这里不起作用,因为您不想拥有 table2 中的所有元素,而只想拥有表 1 中存在相应元素的元素。
你会想做这样的事情:
SELECT tbl1.province, tbl1.district, tbl1.commune, tbl1.village
FROM dbo.table2 AS tbl2
INNER JOIN dbo.table1 AS tbl1
ON tbl1.province = tbl2.province_id
AND tbl1.district = tbl2.district_id
AND (tbl1.commune is NULL OR (tbl1.commune = tbl2.commune_id))
AND (tbl1.village is NULL OR (tbl1.village = tbl2.village_id))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)