我在 MySQL 中有一个表 names
,其中包含以下列 ID, type, row, value
复合主键是ID, type, row
此表的作用是将指定人员的所有姓名和职业保存在多行中——每行一个数据。
例如:在西类牙,人们通常有两个名字和两个姓氏,例如 José Anastacio Rojas Laguna
。
在德国,有很多人只有一个名字但有两个姓氏。甚至职业广泛的人,比如在大学教书,同时在医院当医生。在这种情况下,在德国,人们会有尾随 Prof. Dr.
在他们的名字中。例如:Prof. José Anastacio Rojas 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
,甚至一个人也可以通过他的ID
来识别。 type
定义名称的类型。 0
表示职业,1
表示名字,2
表示姓氏。 row
定义名称中的位置。 1
表示第一个名字,2
表示第二个名字,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é'
关于mysql - 如何选择同一列中出现的相同 ID 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003761/