1

SQL 中是否有一个变量可以用来表示一个字段的所有可能值?像这样的伪代码

SELECT name FROM table WHERE id = *ALL_EXISTING_ID-s*

在这种情况下,我想返回所有行,但是稍后当我进行搜索并且只需要一个项目时,我可以简单地将那个变量替换为id我正在寻找的变量,即

SELECT name FROM table WHERE id = 1
4

1 回答 1

4

最简单的方法是删除 WHERE 子句。这将返回所有行。

SELECT name FROM table 

如果您想要一些“神奇”值,您可以将其用于您可以在现有查询中使用的 ID,它将返回所有行,我认为您不走运。

虽然你可以使用这样的东西:

SELECT name FROM table WHERE id = IFNULL(?, id)

如果NULL提供了该值,则将返回所有行。

如果您不喜欢,请NULL尝试以下查询,如果提供了值,它将返回所有行-1

SELECT name FROM table WHERE id = IFNULL(NULLIF(?, -1), id)

另一种实现相同效果(但需要绑定 id 两次)的方法是:

SELECT name FROM table WHERE (id = ? OR ? = -1)
于 2012-07-21T20:09:57.223 回答