mysql – 如何选择在同一列中出现的相同ID值?

我在
MySQL中有一个表名,其中包含以下列ID,类型,行,值

复合主键是ID,类型,行

此表的目的是将指定人员的所有姓名和职业保存在多行中 – 每行一个数据.

例如:通常在西班牙,人们有两个名字和两个姓氏,如JoséAnastacioRojas Laguna.

在德国,有许多人有一个名字,但有两个姓氏.甚至是广泛职业的人,比如在大学教学和同时在医院做医生.在这种情况下,在德国,人们会以他们的名字落后于教授.例如:JoséAnastacioRojas Laguna教授

在这种情况下,我会将所有这些信息存储在表中,如下所示:

 ID | type | row | value
 1  | 0    | 1   | Prof.
 1  | 0    | 2   | Dr.
 1  | 1    | 1   | José
 1  | 1    | 2   | Anastacio
 1  | 2    | 1   | Rojas
 1  | 2    | 2   | Laguna

为一个人提供一个ID.表中的每个人都有一个唯一的ID,甚至一个人的身份证明. type定义,因为它表示名称的类型. 0表示专业,1表示名字,2表示姓氏. row定义名称中的位置. 1表示第1个名字,2表示第2个名字,3表示第3个名字等等…专业和姓氏相同.

现在我想知道如何通过传递那个人的一些名字来选择指定人的ID?如何通过仅提供一些值(或者具有相同ID)来确定ID?

最佳答案 这将返回名称为JoséLaguna且具有相同ID的用户:

select t1.id, t1.name, t2.name
from yourTable t1
join (select * from yourTable
where name = 'Laguna') t2
on t1.id = t2.id
where t1.name = 'José'
点赞