查询获取真实姓名

时间:2017-09-26 01:40:02

标签: mysql

我的问题是,我想获得一个名称的真实姓名(可以是别名或不是别名)。它将返回真实姓名。

我的表格列包含: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

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
  )