0

我想做一个条件SQL。我有一个表“ users”,它有两列(id, status)

我需要根据用户的状态搜索用户 ID。

例如:我每 5 秒从数据库(通过 AJAX)查询一次,如下所述:

假设我在墙上(在 html 上)有以下结果:

id1: 1
status2: "A"

id2: 2
status2: "B"

我需要从表“用户”中获取 ID,但如果他们的状态在我的墙上没有改变,则从数据库中排除这些 ID。

所以算法应该是:

Get all IDs from table "users" but exclude the IDs (1,2) from database 
(if and only if) their status = ("A", "B").

简单地说,我需要检索所有 ID,包括 ID (1,2)。但是对于 ID (1,2):我需要检索它们,以防它们的相应状态分别不等于(“A”、“B”)。

但是对于 (1,2) 以外的 ID,例如 (3,4,5,...),我需要在没有任何条件的情况下检索它们。

如果该解决方案在数据库记录很大并且每 5 秒检查一次时能提供出色的性能,我将不胜感激。

4

2 回答 2

0

这就是你要找的东西:

SELECT id FROM table1 WHERE id NOT IN
(SELECT id FROM table1 WHERE id IN (1,2) AND status IN ('A','B'))
于 2013-06-20T19:19:40.190 回答
0

如果我理解正确,你想要这样的东西:

WHERE (id IN (1, 2) AND status NOT IN ('A', 'B'))
   OR (id NOT IN (1, 2))

这可以归结为更短(但我认为可读性较差):

WHERE id NOT IN (1, 2) OR status NOT IN ('A', 'B')
于 2013-06-20T17:15:13.063 回答