Найти значения с тем же ключом в MySQL?

85
19 июня 2019, 04:20

Есть таблица table с полями key и name.
Ищу строки по значению name. Хочу получить также строки в которых key совпадает с key из искомых. Например:

KEY  NAME
1    ion
1    mari
2    antuan
3    delatri
4    demetrii
4    alex
5    potstdam

Запрос поиска по со значением alex выдавал результат:

KEY  NAME
4    demetrii
4    alex  

Погуглив написал следующее, но выдаёт только 1 поле, без своего "дубля" по ключу:

SELECT `table`.* 
FROM `table` 
LEFT JOIN 
  (SELECT `name`, `key`
  FROM `table`
  GROUP BY `key`, `name`
  HAVING COUNT(*)>1) as `tbl`
ON
  `table`.`key`=`tbl`.`key` AND
  (`tbl`.`name` LIKE '%alex%')
WHERE `tbl`.`key` IS NOT NULL
Answer 1

Вам нужен обычный JOIN с этой же таблицей

select
  t2.*
from
  test t1
  JOIN test t2 ON (
    t1.`key` = t2.`key`
  )
where
  t1.`name` = 'alex'

db-fiddle

Answer 2

Вероятно, ищете такой способ?

select *
from `table`
where name = 'alex'
    or `key` = (select `key` from test where name = 'alex') 

Пример на db-fiddle.

READ ALSO
MySQL. Как использовать условия в SQL запросе?

MySQL. Как использовать условия в SQL запросе?

Подскажите пожалуйста как использовать условия в SQL запросе?

164
Партицирование таблицы по дате

Партицирование таблицы по дате

Есть таблица с 40+ млн записей, и для быстродействия возникла необходимость ее партицировать по датеПартицирование требует PRIMARY ключ на поле,...

118
Зачем выносить стили в head?

Зачем выносить стили в head?

Знаю что есть такая практика, когда некие части CSS кода выносятся в <head>Я так понимаю, что это на случай если файл стилей не загрузится

117