希望你们能帮忙,因为这一直困扰着我几天。我试图从表中获取唯一行的总数。例如,表中的数据看起来像这样;从MySQL中选择独特的行
user_1 | user_2 | date_added | date_removed
--------|--------|---------------------|---------------------
1 | 2 | 2016-09-20 15:51:45 | 2016-09-24 09:15:32
1 | 3 | 2016-09-21 10:16:03 | 2016-09-29 00:46:44
6 | 1 | 2016-09-23 05:48:59 | 0000-00-00 00:00:00
1 | 3 | 2016-09-30 09:57:16 | 0000-00-00 00:00:00
我想找到的是行的总数为user_id出现在(或列user_1
或列user_2
),那里也只是为用户即配对单一入口(用户配对总会在相同的栏中)和date_removed
= 0000-00-00 00:00:00
。
所以,如果我搜索上面的表user_id
“1”,总的是“1”。 (只有第三行符合搜索标准); 其中user_id
'2'的搜索等于'0'; '3'等于'0'的 user_id
; '6'将等于'1'的 user_id
;
希望是有道理的。任何帮助或指针将不胜感激。
---- ----编辑
这是查询我到目前为止,我已经尝试过多种方法INC加入等等,但是这已经让我最接近的,到目前为止,它不是最干净方式确定!
SELECT COUNT(*) AS `count`
FROM `table`
WHERE (`user_1` = '1' OR `user_2` = '1')
GROUP BY `user_1`, `user_2`
HAVING `count` < '2' AND MAX(`date_removed`) < '0000-00-00 00:00:01'
然而,当更多的数据出现在表,查询的结果是这样的:
count
-----
1
1
1
如果我想让它显示:
count
-----
3
从您的解释,它看起来像你只在user_1上搜索。但它听起来像你想在user_1和user_2中搜索user_id。如果是这样的话,1的user_id将导致2的计数。因此,6或1的user_id将匹配第3行.1的user_id将匹配第3和4行....你能解释更多详情? – TimBrownlaw
user_id将在两列(user_1和user_2)中进行搜索。只有第3行将匹配用户1的搜索要求,因为尽管第4行对于date_removed具有“0000-00-00 00:00:00”,用户配对(1&3)也出现在第2行。 – user3053392
您可以在质疑你已经尝试过的SQL?正如@ user3053392指出的那样,理解是可以找到多于一行的行。另外,当我user_id = 3时,它也会返回1(第4行),据我了解。我认为我们错过了一些东西。 – Tom