我有一个带有用户号码的Oracle数据库。像:
Prename ID
------- -------
Tom u2300
Tom xu2300
Julian ue2301
Anet xue2302
我会找到所有具有相同ID的用户“unumber”/“uenumber”和“xnumber”/“xuenumber”。 它们必须都存在。只有u / uenumber或xu / xue的所有用户都可以。
我需要查询帮助。 非常感谢。
答案 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)
迪特