如何排除 SQL 中的特定记录?

How do I exclude a specific record in SQL?

我想在我的 table 中排除一条记录,但它不符合逻辑。这是我的 Weapons table:

Name / DPS / Style

Noxious Bow / 1000 / Range
Chaotic Staff / 800 / Magic
Armadyl Crossbow / 750 / Range
Saradomin Godsword / 600 / Melee
Dragon Longsword / 600 / Magic
Dragon Longsword / 550 / Melee
Elder Shortbow / 500 / Range

我想做的是排除 Dragon Longsword 的记录 StyleMelee

这是我尝试过的:

SELECT *
FROM Weapons
Where Name!='Dragon Longsword' AND Style!='Melee';

发生的事情是它没有显示任何包含 Dragon LongswordMelee 的记录。我希望它不只显示以下记录:

Dragon Longsword / 550 / Melee
SELECT * 
FROM Weapons 
Where Name!='Dragon Longsword' OR Style!='Melee'

逻辑上,你想要的是:

not (name == 'Dragon Longsword' and Style == 'Melee')

应用简单的布尔逻辑(De Morgan's laws,谢谢@Rocket),这可以翻译成:

name != 'Dragon Longsword' or Style != 'Melee'

所以正确的查询需要 OR,而不是 AND,尽管看起来不直观:

SELECT *
FROM Weapons
Where Name!='Dragon Longsword' OR Style!='Melee';