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

标签 mysql sql

我在 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/

相关文章:

sql - 关于 Pivot 与 Case 优劣的问题

sql - oracle表中重复的总数

表的 MySQL LIKE 通配符

sql - Microsoft SQL 查询时间戳中的小时数

php - 使用多个 while 循环从多个数据库表中获取多个数据

PHP 和 SQL Server - 思考

javascript - sql中插入语句失败

sql - 根据多个列值选择最具体的行匹配

MySQL - 日期列格式

mysql - str to date mysql函数默认日期