很抱歉,如果标题不是真的可以理解,请随时编辑。 我有一个名为CLIENT的表,这是一个数据样本:
ID_CLIENT CLIENT_NAME OTHER_ID
----------------------------------------
1 'COMPANY A' 1
2 'COMPANY B' 4
3 'COMPANY C' 3
4 'COMPANY D' 1
我想创建一个获取CLIENT_NAME而不是OTHER_ID的查询。 这真的很难解释,这是我希望用我的查询看到的结果:
ID_CLIENT CLIENT_NAME CLIENT_BRANCH
--------------------------------------------
1 'COMPANY A' 'COMPANY A'
2 'COMPANY B' 'COMPANY D'
3 'COMPANY C' 'COMPANY C'
4 'COMPANY D' 'COMPANY A'
我想将OTHER_ID“链接”到相关的CLIENT_NAME ... 如果您知道如何比我更好地解释它,请随时编辑问题。
提前谢谢。
答案 0 :(得分:4)
自我加入将解决您的问题。
试试这个:
SELECT C1.ID_CLIENT, C1.CLIENT_NAME, C2.CLIENT_NAME CLIENT_BRANCH
FROM CLIENT C1
INNER JOIN CLIENT C2 ON C1.OTHER_ID = C2.ID_CLIENT;
修改强>
如果您在NULL
列中有OTHER_ID
值,请使用 LEFT JOIN 代替 INNER JOIN
SELECT C1.ID_CLIENT, C1.CLIENT_NAME, C2.CLIENT_NAME CLIENT_BRANCH
FROM CLIENT C1
LEFT JOIN CLIENT C2 ON C1.OTHER_ID = C2.ID_CLIENT;
答案 1 :(得分:0)
试试这个:
select a.client_id, a.client_name, b.client_name as client_branch
from client a join client b on (a.other_id = b.client_id)
(好像我已经太晚了,抱歉)
答案 2 :(得分:0)
SELECT a.id_client,
a.client_name,
b.client_name AS "client_branch"
FROM client a
INNER JOIN client b
ON (a.other_id = b.id_client)
/
阅读有关JOINS的文档。关于SELF JOINS的文档的几个例子。
编辑:关于NULL值
在关于JOINS的相同链接中,请阅读OUTER JOINS
。因为NULL
是三值逻辑,所以它既不等于NULL也不等于NULL。您需要使用outer join
来包含在NULL情况下不匹配的行。或者,提供一个如何处理NULL值的逻辑。