2017-03-06 30 views
-3

我有一个表T.我们有多个记录为特定user_id与匹配type = "Red Card"。我只想要user_Idmatch_id,它在整场比赛中从未收到"Red Card"当条件不匹配时如何获得该ID

按照其安装我会得到表格图像输出: match_id : 30363090user_id 46分别enter image description here

+1

没有力气问 – Kasnady

+1

做过@AKZhang没有使用提供了一堆的解决方案,甚至做努力... :) –

回答

0

如果你想选择所有字段使用子查询

SELECT DISTINCT user_id, match_id from tbl where match_id NOT IN (
    SELECT match_id from tbl where type = 'Red Card' 
    ) 
+0

谢谢你的帮助。尽管我最初尝试过,但并未使用子查询。 – Rains

0
Select match_id,user_id from T where user_id Not IN (Select user_id from T where type = 'Red Card') as k Group By user_id 

上面的查询将去除具有由第一选择USER_ID红牌的所有用户来自在嵌套查询中有红卡的T,然后使用“NOT IN”选择不在嵌套语句中的用户,然后通过user_id进行分组以删除重复记录。

+0

虽然这个代码片断是值得欢迎的,可能会提供一些帮助,如果它包含* how *和* why *的解释](// meta.stackexchange.com/q/114762),将会[大大改进]解决此问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

@TobySpeight: - 编辑 –

0

我会做这样的事情:

SELECT * FROM T WHERE type <>'Red Card' GROUP BY match_id, user_id 

这将选择表中的所有记录,其中有没有“红卡”和组由会给你从每对夫妇只匹配一个记录/用户

0

希望这会有所帮助。

SELECT DISTINCT user_id, match_id FROM T WHERE type <> 'Red Card' GROUP BY match_id 

因为在表一式两份user_idmatch_id -s,我用DISTINCT选择从表中唯一的ID。

+0

尽管此代码片段是受欢迎的,并且可能会提供一些帮助,但如果它包含解释,它会[大大改善](// meta.stackexchange.com/q/ 114762)的*如何*和*为什么*这解决了这个问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

+0

编辑答案。 – Muntasir

0
SELECT * FROM `T` where not exists (SELECT * FROM `T` where `type`="Red card") 
+0

虽然这个代码片段是受欢迎的,并且可以提供一些帮助,但它会[如果包括解释](/ meta.stackexchange.com/q/114762)* how *和* why *会大大改进,这将解决问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –

0
SELECT MATCH_ID AND USER_ID FROM TABLENAME WHERE TYPE NOT IN('RED CARD') 

此查询可以帮助你