SQL选择是否有2个名称

时间:2013-08-21 14:25:07

标签: sql select

我有一个带有用户号码的Oracle数据库。像:

Prename    ID   
-------    -------
Tom        u2300   
Tom        xu2300   
Julian     ue2301   
Anet       xue2302   

我会找到所有具有相同ID的用户“unumber”/“uenumber”和“xnumber”/“xuenumber”。 它们必须都存在。只有u / uenumber或xu / xue的所有用户都可以。

我需要查询帮助。 非常感谢。

2 个答案:

答案 0 :(得分:0)

你在找这样的东西吗?

PRENAME ID      ID2
Anet    xue2302 null
Julian  ue2301  null
Tom     u2300   xu2300

如果是,这是查询:

SELECT u1."Prename", u1.ID as ID, u2.ID as ID2 
FROM users u1
LEFT OUTER JOIN users u2 ON u2.ID = concat('x',u1.ID)
WHERE u1.ID LIKE 'u%'
UNION
SELECT u1."Prename", u1.ID as ID, u2.ID as ID2 
FROM users u1
LEFT OUTER JOIN users u2 ON u2.ID = replace(u1.ID,'x')
WHERE u1.ID LIKE 'x%' AND u2.ID is null

请参阅SQLFIDDLE:http://www.sqlfiddle.com/#!4/81bb1/13/0

答案 1 :(得分:0)

只是在找名字?还是身份证?

SELECT "Prename"
  ,MIN(CASE WHEN ID LIKE 'u%' THEN ID END) u_id
FROM users 
GROUP BY "Prename"
HAVING 
   MIN(CASE WHEN ID LIKE 'x%' THEN SUBSTR(ID,2) END)
 = MIN(CASE WHEN ID LIKE 'u%' THEN ID END)

迪特