【发布时间】:2012-02-13 21:15:55
【问题描述】:
id player_id nat nt_caps
13740 28664 97 24
13741 28664 68 0
13742 28664 79 0
16252 42904 15 40
16253 42904 68 0
16254 42904 241 0
这就是我的桌子的样子。我想为每个 nat 选择具有 nt_caps = "0" 的 player_id 或仅对于 nat = "68" 具有 nt_caps != "0" 的 player_id。
我尝试使用的 SQL 查询是:
SELECT player_id FROM x WHERE nat = '68' AND (nat != '68' AND nt_caps = '0')
但后来我得到 player_id '42904' 和 '28664' 因为它们都有 1 个与查询匹配的条目,但我不想要它们,因为它们有 nt_caps 用于另一个 nat 而不是 nat "68"。
我希望你能理解我想要达到的目标。
【问题讨论】:
-
如果你想要这个或那个,你为什么要使用 AND?
-
对我来说这听起来很混乱。但据我所知,将第一个 AND 更改为 OR,您的查询应该返回 ok。
-
nt_caps中是否有NULL值? -
请举一个输入和期望输出的例子,我明白你想要什么,但似乎很多人没有。
-
我输入了 nat = 68,然后我想要所有 nat 的 nt_caps = 0 的所有 player_id,除了 nat = 68 或所有 nt_caps = 0 的 player_id。如果他们有除 nt = 68 以外的任何 nt_caps,我想排除它们。上表只是一个例子,有超过 40k 行。