SQL-код для выбора записей, где field_A соответствует значению field_A определенного значения field_B - PullRequest
1 голос
/ 13 июня 2019

У меня есть эта таблица

ID  Email
aa  aa@gmail.com
aa  aa@yahoo.com
bb  bb@gmail.com
cc  cc@hotmail.com

Используя код SQL, я хочу выбрать все записи, которые имеют тот же идентификатор, что и идентификатор электронной почты aa@gmail.com. Итак, он вернется:

aa  aa@gmail.com
aa  aa@yahoo.com

Я знаю, что мы можем выбирать записи, где field_A - это определенное значение, подобное этому:

SELECT * FROM tablename WHERE ID="aa"

Как я могу изменить этот код для достижения желаемых результатов?

Ответы [ 5 ]

3 голосов
/ 13 июня 2019

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

SELECT t.*
FROM tablename t
WHERE t.ID = (SELECT t2.id
              FROM tablename t2
              WHERE t2.email = 'aa@gmail.com'
             );
2 голосов
/ 13 июня 2019
select * from tablename where id in (
    SELECT ID AS count FROM tablename GROUP BY ID HAVING COUNT(ID) > 1
) 
1 голос
/ 13 июня 2019

Используя JOIN ту же таблицу ON ID, возможен результат:

SELECT T1.ID, T2.Email 
FROM TableName T1
JOIN TableName T2 ON T2.ID = T1.ID
WHERE T1.Email = 'aa@gmail.com'

Демонстрация на дб <> скрипка

0 голосов
/ 13 июня 2019

Вместо жесткого кодирования он должен возвращать значения после оценки

CREATE TABLE TestTable (ID VARCHAR(5), Email VARCHAR (20));

INSERT INTO TestTable (ID, Email) VALUES
('aa', 'aa@gmail.com'),
('aa', 'aa@yahoo.com'),
('bb', 'bb@gmail.com'),

SELECT *
FROM TestTable
WHERE ID  IN 
(
SELECT CASE WHEN ROW_NUMBER() OVER(PARTITION BY ID ORDER BY ID)>1 THEN ID END AS ID
FROM TestTable
)
0 голосов
/ 13 июня 2019

Вы можете использовать SUBSTRING_INDEX

SELECT * FROM tablename WHERE ID=SUBSTRING_INDEX(`Email`, '@', 1) and Email='aa@gmail.com'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...