SQL查询“WHERE IN”

时间:2015-08-10 06:26:56

标签: sql where

我有这个问题:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()

当我执行它时,它返回消息:

  

')'附近的语法不正确。

有什么问题?

6 个答案:

答案 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)

您缺少in条件中的参数。

请找到以下链接,了解使用WHERE IN的正确方法:

http://www.w3schools.com/sql/sql_in.asp

答案 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)

如果BeneficaryIDBeneficaryID,则通过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