我有一个表T.我们有多个记录为特定user_id
与匹配type = "Red Card"
。我只想要user_Id
和match_id
,它在整场比赛中从未收到"Red Card"
。当条件不匹配时如何获得该ID
按照其安装我会得到表格图像输出: match_id : 3036
和3090
和user_id 4
和6
分别
我有一个表T.我们有多个记录为特定user_id
与匹配type = "Red Card"
。我只想要user_Id
和match_id
,它在整场比赛中从未收到"Red Card"
。当条件不匹配时如何获得该ID
按照其安装我会得到表格图像输出: match_id : 3036
和3090
和user_id 4
和6
分别
如果你想选择所有字段使用子查询
SELECT DISTINCT user_id, match_id from tbl where match_id NOT IN (
SELECT match_id from tbl where type = 'Red Card'
)
谢谢你的帮助。尽管我最初尝试过,但并未使用子查询。 – Rains
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进行分组以删除重复记录。
虽然这个代码片断是值得欢迎的,可能会提供一些帮助,如果它包含* how *和* why *的解释](// meta.stackexchange.com/q/114762),将会[大大改进]解决此问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –
@TobySpeight: - 编辑 –
我会做这样的事情:
SELECT * FROM T WHERE type <>'Red Card' GROUP BY match_id, user_id
这将选择表中的所有记录,其中有没有“红卡”和组由会给你从每对夫妇只匹配一个记录/用户
希望这会有所帮助。
SELECT DISTINCT user_id, match_id FROM T WHERE type <> 'Red Card' GROUP BY match_id
因为在表一式两份user_id
和match_id
-s,我用DISTINCT
选择从表中唯一的ID。
尽管此代码片段是受欢迎的,并且可能会提供一些帮助,但如果它包含解释,它会[大大改善](// meta.stackexchange.com/q/ 114762)的*如何*和*为什么*这解决了这个问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –
编辑答案。 – Muntasir
SELECT * FROM `T` where not exists (SELECT * FROM `T` where `type`="Red card")
虽然这个代码片段是受欢迎的,并且可以提供一些帮助,但它会[如果包括解释](/ meta.stackexchange.com/q/114762)* how *和* why *会大大改进,这将解决问题。请记住,你正在为将来的读者回答这个问题,而不仅仅是现在问的人!请编辑您的答案以添加解释,并指出适用的限制和假设。 –
SELECT MATCH_ID AND USER_ID FROM TABLENAME WHERE TYPE NOT IN('RED CARD')
此查询可以帮助你
没有力气问 – Kasnady
做过@AKZhang没有使用提供了一堆的解决方案,甚至做努力... :) –