Надеюсь, вы, ребята, можете помочь, так как это прослушивало меня пару дней. Я пытаюсь получить общее количество уникальных строк из таблицы. Например, данные в таблице выглядят так:Выбор уникальной строки из 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'. (Только 3-я строка соответствует критерию поиска); где поиск user_id
'2' будет равен '0'; user_id
из '3' будет равен '0'; user_id
из '6' будет равен '1';
Надеюсь, что имеет смысл. Любая помощь или указатели будут высоко оценены.
---- EDIT ----
Это запрос я до сих пор, я попробовал несколько способов вкл присоединяется и т.д., но это заставило меня ближе всего до сих пор, и его не чистейшая путь уверен!
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
Из вашего объяснения, похоже, вы ищете только пользователь_1. Но похоже, что вы хотите искать user_id как в user_1, так и в user_2. Если это так, user_id из 1 приведет к подсчету 2. Таким образом, user_id из 6 или 1 будет соответствовать строке 3. Пользователь user_id из 1 будет соответствовать строкам 3 и 4 .... Можете ли вы объяснить это более подробно? – TimBrownlaw
user_id будет искать в обоих столбцах (user_1 и user_2). Только строка 3 будет соответствовать поисковым запросам для пользователя 1, так как хотя строка 4 имеет «0000-00-00 00:00:00» для date_removed, пользовательское сопряжение (1 и 3) также отображается в строке 2. – user3053392
Можете ли вы вставить в вопрос SQL, который вы уже пробовали? Как указал @ user3053392, понимание заключается в том, что будет найдено более одной строки. Кроме того, когда user_id = 3, он также вернет 1 (4-я строка) из моего понимания. Я думаю, что мы что-то упустили. – Tom