我对SQL不是很熟练,需要一些帮助。我有一个包含许多列的表,我正在尝试识别列值的多个组合相同的那些行。下面是一个查询尝试,当所有比较都为真时,将选择该行。查询运行但效果不正确。
SELECT *
FROM [Customer]
WHERE [State] = [Shipping State/Province]
AND [Zip Code] = [Shipping Zip/Postal Code]
AND [Customer Type] = [Customer Type 2]
提前致谢。
答案 0 :(得分:1)
如上所述,您的查询似乎可以执行您想要的操作。一种可能性是忽略NULL
值。如果是这样的话:
SELECT *
FROM [Customer]
WHERE ([State] = [Shipping State/Province] OR [State] IS NULL AND [Shipping State/Province] IS NULL) AND
([Zip Code] = [Shipping Zip/Postal Code] OR [Zip Code] IS NULL AND [Shipping Zip/Postal Code] IS NULL) AND
([Customer Type] = [Customer Type 2] OR [Customer Type] IS NULL AND [Customer Type 2] IS NULL);
另一种可能性是值看起来可能相同,但由于前导/尾随空格或类似的字母,它们不是。
答案 1 :(得分:0)
你的问题在于投射。如果您的列类型是整数,那么将其值除以另一列将得到除法的整数部分,这可能与您的结果不相等,因此您的查询将无法给出正确的答案。 对于分辨率,您可以为您投射列类型并进行计算。