如何选择具有所有可能id-s的项目或仅使用相同查询的特定项目?

时间:2012-07-21 20:08:19

标签: sql

SQL中是否有可用于表示 ALL 字段可能值的变量?像这样的伪代码

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

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

SELECT name FROM table WHERE id = 1

1 个答案:

答案 0 :(得分: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)