我有这个问题:
SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()
当我执行它时,它返回消息:
')'附近的语法不正确。
有什么问题?
答案 0 :(得分:5)
那是因为,你的IN
子句没有参数/参数WHERE BeneficaryID IN ()
。它应该是WHERE BeneficaryID IN (id1,id2,id3, ...,idn)
您当前的查询与下面的说法相同,不需要WHERE
条件
SELECT Company_Name FROM tblBeneficaries
答案 1 :(得分:3)
您读取的查询应该不返回任何行,因为所需的BeneficaryID集合为空。但是这个语法无效,因为IN子句必须至少包含一个值。为了表示空集,请添加NULL:
SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN (NULL);
这在动态构建查询时非常有用,您最终会在集合中包含零个或多个元素,即(NULL)
表示空集,或(NULL, 4, 16)
表示数字4和16,例如。
它仍然是IN子句的烦人限制,并且所显示的技巧不适用于NOT IN! (添加NULL会阻止您获取任何记录,因此您必须使用从未使用的非空值,例如WHERE BeneficaryID NOT IN (-1)
)。
答案 2 :(得分:2)
答案 3 :(得分:1)
您需要为IN
运算符添加值:
例如:
SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN (1,2,3,4)
在w3school中读取语法。
答案 4 :(得分:1)
IN SQL的语法:
SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);
在以下查询中的()之间提供值:
SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()
您的值缺失会引发错误。
检查演示示例here。
答案 5 :(得分:0)
SELECT Company_Name
FROM tblBeneficaries
WHERE BeneficaryID IN (1,2,3,4)
如果BeneficaryID
为BeneficaryID
,则通过INT
替换()来执行此类操作。
如果''
为BeneficaryID
,请为VARCHAR
添加('1', '2')
,如keys1 = first.keys()
keys2 = second.keys()
keys1_set = set(keys1)
keys2_set = set(keys2)
differentElements = keys1_set.symmetric_difference(keys2_set)
print differentElements