MySQL выбрать уникальную строку - PullRequest
0 голосов
/ 19 ноября 2011

У меня есть следующая таблица - mytable:

----id----|----user_id----|----value-----|
----1-------------1------------- 9
----2-------------1------------- 8
----3-------------2 -------------11
----4-------------2-------------12
----5-------------3-------------11
----6-------------4-------------8
----7-------------1-------------3

Я хочу SELECT * FROM mytable..., где значение имеет одну запись, подобную этой:

----id----|----user_id----|----value-----
----1-------------1-------------9
----4-------------2-------------12
----7-------------1-------------3

Обратите внимание, что значение 8и значение 11 имеет дубликаты, и я удалил все

Ответы [ 4 ]

1 голос
/ 19 ноября 2011

Вы можете попробовать левое соединение:

SELECT T1.id, T1.user_id, T1.value
FROM yourtable T1
LEFT JOIN yourtable T2
ON T1.value = T2.value
AND T1.id <> T2.id
WHERE T2.id IS NULL
1 голос
/ 19 ноября 2011

Попробуйте это

SELECT * FROM mytable
GROUP BY `value`
HAVING count(*) = 1

или

SELECT * FROM mytable
GROUP BY `value`
HAVING count(*) < 2
0 голосов
/ 20 ноября 2011

Я бы сделал это:

select t1.* 
from table1 t1
where 1 = (select count(t2.id)
                    from table1 t2
                    where t1.value = t2.value 
                    )

Надеюсь, что это работает.

PS: идентификатор должен быть уникальным ключом.

0 голосов
/ 20 ноября 2011

Приведенный ниже запрос должен нормально работать для вопроса, заданного выше.

ВЫБРАТЬ Т1. * ИЗ MYTABLE T1, ( ВЫБЕРИТЕ ЗНАЧЕНИЕ ИЗ MYTABLE ГРУППА ПО ЦЕННОСТИ СЧЕТЧИК (*) = 1 ) T2 ГДЕ T1.VALUE = T2.VALUE;

С уважением, Venk

...