我想创建一个条件SQL。我有一张桌子" users
"它有两列(id, status)
我需要根据用户ID状态搜索用户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秒检查一次,该解决方案可提供出色的性能,我将不胜感激。
答案 0 :(得分: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')
答案 1 :(得分:0)
这就是你要找的东西:
SELECT id FROM table1 WHERE id NOT IN
(SELECT id FROM table1 WHERE id IN (1,2) AND status IN ('A','B'))