Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何排除同时满足两个条件的记录?_Mysql - Fatal编程技术网

Mysql 如何排除同时满足两个条件的记录?

Mysql 如何排除同时满足两个条件的记录?,mysql,Mysql,我有一个相当复杂的问题 SELECT g.guidUser,u1.username,g.sent,g.accepted,g.declined,g.rewarded,g.guidUserVersus,u2.username AS usernameUserVersus FROM games g INNER JOIN userdata u1 ON g.guidUser=u1.guidUser INNER JOIN userdata u2 ON g.guidUserVersus=u2.guidUse

我有一个相当复杂的问题

SELECT g.guidUser,u1.username,g.sent,g.accepted,g.declined,g.rewarded,g.guidUserVersus,u2.username AS usernameUserVersus
FROM games g 
INNER JOIN userdata u1 ON g.guidUser=u1.guidUser 
INNER JOIN userdata u2 ON g.guidUserVersus=u2.guidUser 
WHERE 
((g.sent!="" OR g.accepted!="" OR g.declined!="") 
AND g.rewarded="" AND (g.guidUser='1' OR g.guidUserVersus='1')) 
ORDER BY g.guidUser, g.idGame
现在我想排除同时具有

(g.accepted!=“和g.guidUserVersus='1')

我试过了

SELECT g.guidUser,u1.username,g.sent,g.accepted,g.declined,g.rewarded,g.guidUserVersus,u2.username AS usernameUserVersus,g.idGameVersus,g.timeFinal 
FROM games g 
INNER JOIN userdata u1 ON g.guidUser=u1.guidUser 
INNER JOIN userdata u2 ON g.guidUserVersus=u2.guidUser 
WHERE 
((g.sent!="" OR g.accepted!="" OR g.declined!="") 
AND g.rewarded="" AND (g.guidUser='1' OR g.guidUserVersus='1')) 
** AND !(g.accepted!="" AND g.guidUserVersus='1') **
ORDER BY g.guidUser, g.idGame
但它似乎并没有选择它应该选择的记录,就像让g接受一样=“”和g.guidUserVersus='2'

这是小提琴

编辑:您需要使用或在条件内替换和

SELECT g.guidUser,u1.username,g.sent,g.accepted,g.declined,g.rewarded,g.guidUserVersus,u2.username AS usernameUserVersus,g.idGameVersus,g.timeFinal 
FROM games g 
INNER JOIN userdata u1 ON g.guidUser=u1.guidUser 
INNER JOIN userdata u2 ON g.guidUserVersus=u2.guidUser 
WHERE 
((g.sent!="" OR g.accepted!="" OR g.declined!="") 
AND g.rewarded="" AND (g.guidUser='1' OR g.guidUserVersus='1')) 
AND NOT (g.accepted!="" OR g.guidUserVersus='1')
ORDER BY g.guidUser, g.idGame

编辑:您需要使用或在条件内替换和

SELECT g.guidUser,u1.username,g.sent,g.accepted,g.declined,g.rewarded,g.guidUserVersus,u2.username AS usernameUserVersus,g.idGameVersus,g.timeFinal 
FROM games g 
INNER JOIN userdata u1 ON g.guidUser=u1.guidUser 
INNER JOIN userdata u2 ON g.guidUserVersus=u2.guidUser 
WHERE 
((g.sent!="" OR g.accepted!="" OR g.declined!="") 
AND g.rewarded="" AND (g.guidUser='1' OR g.guidUserVersus='1')) 
AND NOT (g.accepted!="" OR g.guidUserVersus='1')
ORDER BY g.guidUser, g.idGame

在小提琴中尝试一下,它仍然没有选择4'的游戏记录,它应该返回预期的结果。要排除的记录需要同时满足这两个条件。但是,只有第二个是满意的。您需要将“AND”替换为“OR”。我将编辑我的回复。另外,第四条记录没有被选中,因为accepted不为空,并且您正在排除accepted不为空的所有记录。哎呀,不,您一开始是对的。数据中出现错误,第四条记录未对条件进行安全性验证(g.guidUser='1'或g.guidUserVersus='1'),谢谢!!还原,而不是或和答案fitstry它在小提琴,它仍然没有选择4'的游戏记录,它应该查询返回预期的结果。要排除的记录需要同时满足这两个条件。但是,只有第二个是满意的。您需要将“AND”替换为“OR”。我将编辑我的回复。另外,第四条记录没有被选中,因为accepted不为空,并且您正在排除accepted不为空的所有记录。哎呀,不,您一开始是对的。数据中出现错误,第四条记录未对条件进行安全性验证(g.guidUser='1'或g.guidUserVersus='1'),谢谢!!还原并替换为或,答案是正确的