如何排除 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
的记录 Style
为 Melee
。
这是我尝试过的:
SELECT *
FROM Weapons
Where Name!='Dragon Longsword' AND Style!='Melee';
发生的事情是它没有显示任何包含 Dragon Longsword
或 Melee
的记录。我希望它不只显示以下记录:
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';
我想在我的 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
的记录 Style
为 Melee
。
这是我尝试过的:
SELECT *
FROM Weapons
Where Name!='Dragon Longsword' AND Style!='Melee';
发生的事情是它没有显示任何包含 Dragon Longsword
或 Melee
的记录。我希望它不只显示以下记录:
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';