我在
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é'