2010-02-22 2 views
2

У меня есть таблица под названием «Задачи». Эта таблица содержит следующие поляSQL - Поиск записей с аналогичным значением

  • ID
  • TypeID
  • Описание

Как найти все задачи, которые имеют более чем одну задачу в TypeID? У меня нет запроса TypeID для запроса. Скорее, я просто хочу перечислить те задачи, которые имеют TypeID, который используется для нескольких задач. Я не уверен, как это сделать.

Благодарим за помощь!

+0

Для какой базы данных? –

ответ

3
SELECT 
    * 
FROM 
    Tasks 
WHERE TypeID IN 
    (SELECT TypeID FROM Tasks 
    GROUP BY TypeID HAVING COUNT(*) > 1) 
1

Использование:

SELECT t.description 
    FROM TASKS t 
GROUP BY t.description 
    HAVING COUNT(t.typeid) > 1 
+0

Группировка по ID плохая - вы группируете уникальный ключ (скорее всего), и поэтому никогда не будет группы, у которой есть счет> 1 –

+0

@Timothy: Исправлено. –

+0

Этот запрос предполагает, что описание-тип-идентификатор 1-к-1 ... но я думаю, что он получил эту идею сейчас :) –

0

Вот два способа сделать это без использования группы по:

# faster solution 
SELECT A.* 
FROM Tasks A, 
    Tasks B 
WHERE B.id != A.id AND B.TypeID = A.TypeID 

ИЛИ

SELECT A.* 
FROM Tasks A, 
WHERE EXISTS (SELECT 1 FROM Tasks B WHERE B.id != A.id AND B.TypeID = A.TypeID) 
Смежные вопросы