pur*_*ppc 4 mysql sql record operators
我想排除在我的表中的记录,但它不是逻辑上的工作.这是我的Weapons表:
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
Run Code Online (Sandbox Code Playgroud)
我正在试图做的是排除记录Dragon Longsword具有Style的Melee.
这是我尝试过的:
SELECT *
FROM Weapons
Where Name!='Dragon Longsword' AND Style!='Melee';
Run Code Online (Sandbox Code Playgroud)
发生的事情是它没有显示任何包含Dragon Longsword或的记录Melee.我希望它不显示以下记录:
Dragon Longsword / 550 / Melee
Run Code Online (Sandbox Code Playgroud)
从逻辑上讲,你想要的是:
not (name == 'Dragon Longsword' and Style == 'Melee')
Run Code Online (Sandbox Code Playgroud)
应用简单的布尔逻辑(De Morgan定律,谢谢@Rocket),这可以转换为:
name != 'Dragon Longsword' or Style != 'Melee'
Run Code Online (Sandbox Code Playgroud)
所以正确的查询需要一个OR,而不是一个AND,因为它可能看起来不直观:
SELECT *
FROM Weapons
Where Name!='Dragon Longsword' OR Style!='Melee';
Run Code Online (Sandbox Code Playgroud)