0

我有一个带有用户编号的 Oracle 数据库。喜欢:

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

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

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

4

2 回答 2

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)

迪特

于 2013-08-21T15:05:59.200 回答
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

于 2013-08-21T14:51:22.140 回答