我正在尝试生成一个SQL语句,我需要摆脱所有具有某种特征的'用户'。这是这里的例子
+------+-------+
| User | Trait |
+------+-------+
| A | Fire |
| A | Water |
| A | Air |
| B | Water |
| B | Air |
| C | Water |
| C | Fire |
+------+-------+
使用SQL我想删除所有具有与之关联的特征的用户。
所以基本上,之后,我们会留下
+------+-------+
| User | Trait |
+------+-------+
| B | Water |
| B | Air |
+------+-------+
如果我能够在excel中使用某些东西来过滤而不是通过SQL,那么这也可以。我一直在寻找各种各样的方法,但是从我尝试过的,大多数只会删除具有特征的单行,但不会删除用户。
我需要sql来翻译
中的内容For (i = table.length; i++)
If Trait = Fire
getVal(User(i))
DeleteRows(User(i))
我看了sql除外,但是我正在使用的表格要复杂得多,所以使用基本示例的一些帮助会很好地引导我朝着正确的方向前进。
由于
答案 0 :(得分:2)
最简单的方法是使用not exists
。
select *
from tablename t
where not exists (select 1 from tablename where userid = t.userid and Trait = 'Fire')
答案 1 :(得分:1)
您可以使用子选项并使用NOT IN
SELECT *
FROM mytable
WHERE userid NOT IN (SELECT userid FROM mytable WHERE Trait = 'Fire')
答案 2 :(得分:0)
尝试:
select a.user, a.trait
from the_table a
where not exists
( select null
from the_table b
where b.user = a.user
and b.trait = 'Fire'
);