我有这张桌子
ID Email
aa aa@gmail.com
aa aa@yahoo.com
bb bb@gmail.com
cc cc@hotmail.com
使用SQL代码,我想选择所有ID与电子邮件aa@gmail.com的ID相同的记录。因此它将返回:
aa aa@gmail.com
aa aa@yahoo.com
我知道我们可以选择其中field_A是某个值的记录,如下所示:
SELECT * FROM tablename WHERE ID="aa"
如何修改此代码以获得所需的结果?
答案 0 :(得分:3)
您可以使用子查询:
SELECT t.*
FROM tablename t
WHERE t.ID = (SELECT t2.id
FROM tablename t2
WHERE t2.email = 'aa@gmail.com'
);
答案 1 :(得分:2)
select * from tablename where id in (
SELECT ID AS count FROM tablename GROUP BY ID HAVING COUNT(ID) > 1
)
答案 2 :(得分:1)
使用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'
答案 3 :(得分:0)
您可以使用SUBSTRING_INDEX
SELECT * FROM tablename WHERE ID=SUBSTRING_INDEX(`Email`, '@', 1) and Email='aa@gmail.com'
答案 4 :(得分:0)
与其进行硬编码,它应该在求值后返回值
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
)