2013-12-08 3 views
-1

Я имею следующую таблицу и значенияВыбор строк по сходству с использованием MYSQL запроса

name dob   doj   sex  salary 
dev  1989-01-01 2012-01-01 m  1200 
anish 1989-07-14 1995-01-01 m  5000 
aasha 1988-12-15 2009-06-05 f  5000 

мне нужно последующий вывод.

name dob   doj   sex  salary 
anish 1989-07-14 1995-01-01 m  5000 
aasha 1988-12-15 2009-06-05 f  5000 

Мне нужно выбрать подробности тех, кто зарабатывает на одинаковое количество

+0

что вы имеете в виду остальные игнорировали, пожалуйста, объясните более – ismail

+0

мне нужно, чтобы отобразить сведения тех сотрудников, которые получают ту же сумму. В приведенном выше случае ** 5000 ** в строках три и четыре. –

+0

В вашей таблице есть первичный ключ? – dasblinkenlight

ответ

1

Вы можете сделать это с помощью 2 запросов. Внутренний запрос выбирает все зарплаты, которые имеют 2 или более человек.

SELECT 
    name, 
    dob, 
    doj, 
    sex, 
    t.salary 
FROM 
    table AS t 
    INNER JOIN (SELECT 
       salary 
       FROM 
       table 
       GROUP BY 
       salary 
       HAVING 
       COUNT(*) > 1) AS s 
    USING (salary) 
1

Вы можете ограничить строки для пользователей таким образом, что другой пользователь существует, кто получает такое же количество, как это:

SELECT * 
FROM person p1 
WHERE EXISTS (
    SELECT * 
    FROM person p2 
    WHERE p1.salary=p2.salary -- Has the same salary 
     AND (p1.name <> p2.name -- But is not the same person 
     OR p1.dob <> p2.dob 
     OR p1.doj <> p2.doj 
     OR p1.sex <> p2.sex 
    ) 
) 

Добавление первичного ключа упростит запрос, так как проверка p1.pk <> p2.pk будет достаточной.

+0

Спасибо. Это своего рода назначение, они предоставили таблицу, поэтому я не могу добавить первичный ключ –

+0

, да, запрос работал просто отлично. Получил ожидаемый результат –

Смежные вопросы