MySQL - WHERE IN() - 获取所有数据

问题描述 投票:0回答:4

我有这样的疑问:

SELECT * FROM data WHERE ID IN(1,2,3);

我想知道是否有可能更改 IN 参数值以获取表中的所有行。比如:

SELECT * FROM data WHERE ID IN(LIKE %%);
SELECT * FROM data WHERE ID IN(ANY);
SELECT * FROM data WHERE ID IN(ALL);
etc.

我知道我所要做的就是删除“WHERE ID IN(..)”以获得我需要的内容,但这是更多的理论问题。

mysql sql select where-clause
4个回答
1
投票

我考虑下一个方法:

SELECT * FROM data WHERE ID IN(SELECT ID FROM data);

这很愚蠢,但回答一下问题:)


1
投票

您可以尝试反向查询。

SELECT * FROM data WHERE ID not IN(-1);

0
投票

你不能让

in
做你想做的事。我建议您的查询使用第二个参数,该参数指示当前用户是否是管理员。然后,您可以将布尔值传递给此参数(
0
1
):

SELECT * FROM data WHERE ID IN(%s) OR %s;
                 -- is admin (0 or 1) ^

0
投票

所以,这就是我的解决方案。这种方式只能在

char
列中使用:

SELECT * FROM data WHERE ID IN(false);
© www.soinside.com 2019 - 2024. All rights reserved.