我的问题是,我想获得一个名称的真实姓名(可以是别名或不是别名)。它将返回真实姓名。
我的表格列包含:name_id
name
alias_id
等。添加别名与添加名称相同,但alias_id
设置为name_id
它的真名。添加实名只需将alias_id设置为0。
我试过了:
SELECT name
FROM tbl_name
WHERE
(alias_id <> 0 AND name = input_name) or name = input_name;
但它返回alias_name。感谢
修改 我在这里创建了一个sqlfiddle: http://sqlfiddle.com/#!9/72b432/2
答案 0 :(得分:1)
要获取给定真实姓名或别名的真实姓名,可以通过搜索具有给定*名称的记录并将其用作子查询来实现:
用于查找具有给定名称的记录的表达式:
SELECT alias_id FROM tbl_name WHERE name = input_name;
这将返回具有真实姓名的记录的记录ID,因此您必须
SELECT t1.name FROM tbl_name t1 WHERE t1.name_id = (
SELECT t2.alias_id FROM tbl_name t2 WHERE t2.name = input_name
) or (t1.name = input_name AND t1.alias_id = 0);
答案 1 :(得分:1)
加入自我:
select
t1.name
from
tbl_name t1
left join tbl_name t2 on t1.name_id = t2.alias_id
where
t1.alias_id = 0
and (
t1.name = input_name
or t2.name = input_name
)