SQL查询"WHERE IN"

sal*_*eem 0 sql where

我有这个问题:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN ()
Run Code Online (Sandbox Code Playgroud)

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

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

问题是什么?

Tho*_*ner 6

您的查询在读取时不应返回任何行,因为所需的 BeneficaryID 集为空。然而,这一语法无效,因为不幸的是,IN 子句必须至少包含一个值。为了表示空集,添加 NULL:

SELECT Company_Name FROM tblBeneficaries WHERE BeneficaryID IN (NULL);
Run Code Online (Sandbox Code Playgroud)

这在动态构建查询时非常有用,在该查询中,集合中最终会出现零个或多个元素,即(NULL)空集合或(NULL, 4, 16)数字 4 和 16 的集合。

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


Rah*_*hul 5

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

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

SELECT Company_Name FROM tblBeneficaries 
Run Code Online (Sandbox Code Playgroud)