sql 查询 "WHERE IN"

sql query "WHERE IN"

我有这个问题:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()

当我执行它时 returns 消息:

Incorrect syntax near ')'.

有什么问题?

您需要为 IN 运算符添加值: 例如:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN (1,2,3,4)

阅读 w3school 中的语法。

IN SQL 的语法:

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...);

在以下查询中提供 () 之间的值:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()

Your values are missing that throws you error.

检查演示示例 here

那是因为,你的IN子句没有parameter/argumentWHERE BeneficaryID IN ()。应该是WHERE BeneficaryID IN (id1,id2,id3, ...,idn)

您当前的查询与下面所说的相同,不需要WHERE条件

SELECT Company_Name FROM tblBeneficaries 
SELECT Company_Name
FROM tblBeneficaries
WHERE BeneficaryID IN (1,2,3,4)

如果 BeneficaryIDINT,请将 () 替换为您的 BeneficaryID,这样执行。
如果 BeneficaryIDVARCHAR,则为值添加 '',例如 ('1', '2')

您缺少 in 条件中的参数。

请在下方找到 link 以了解正确使用 WHERE IN 的方法:

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

您的查询应该return 没有行,因为所需的 BeneficaryID 集是空的。然而,此语法无效,因为不幸的是,IN 子句 必须 至少包含一个值。为了表示一个空集,添加NULL:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN (NULL);

这在动态构建查询时很有用,在这种情况下,您最终会在集合中得到零个或多个元素,即 (NULL) 表示空集,(NULL, 4, 16) 表示一组数字 4 和例如 16。

IN 子句仍然是一个烦人的限制,并且显示的技巧不适用于 NOT IN! (添加 NULL 会阻止您获取 any 记录,因此您必须使用从未使用过的非空值,例如 WHERE BeneficaryID NOT IN (-1))。