当前位置: 首页 > 知识库问答 >
问题:

mysql查询没有找到最新的记录,而是找到第一个记录

唐晗昱
2023-03-14

我有下表patient:

我还有以下patient_case_number表:

现在我有以下疑问:

SELECT p.id_number, p.first_name, p.last_name, p.father_name, p.department, f.case_number
FROM poria.patient AS p
JOIN (
    SELECT pcn.id_number, pcn.case_number
    FROM poria.patient_case_number AS pcn
    ORDER BY pcn.created_at ASC
) AS f
ON f.id_number = p.id
WHERE p.face_dev_id = 'x'
LIMIT 1

长话短说--我的目标是,给定face_dev_id值,从patient_case_number表中获取最新的case_number值。

它应该是这样工作的:给定face_dev_id值-在patient表中搜索与face_dev_id相同值的匹配记录(注意此列是唯一的)。然后-在patient_case_number表中查找最新的case_number值(使用created_at值)。使用与Patient表中的ID列匹配的ID_Number列在此表中搜索它。

当前,该查询将返回case_number=2020,但不返回case_number=3030(我需要它是3030)。你能帮我修一下吗?

共有1个答案

习海
2023-03-14

只需在内部查询中添加limit1并将其从asc更改为desc-否则将通过最晚的created_at查询第一个:

SELECT p.id_number, p.first_name, p.last_name, p.father_name, p.department, f.case_number
FROM poria.patient AS p
JOIN (
    SELECT pcn.id_number, pcn.case_number
    FROM poria.patient_case_number AS pcn
    ORDER BY pcn.created_at DESC LIMIT 1
) AS f
ON f.id_number = p.id
WHERE p.face_dev_id = 'x'
LIMIT 1
 类似资料:
  • 问题内容: 桌子: 查询: 结果: 问题: 如何重写查询,使其返回post_id-> 83而不是post_id-> 81? 他们都有相同的论坛ID和主题ID,但是post_id-> 81的日期早于post_id-> 83。 但是,Group By似乎获得了“第一”记录,而不是“最新”记录。 我尝试将查询更改为 但这同时返回post_id 81和83 问题答案: 如果选择在group子句中未使用且不

  • 本文向大家介绍MySQL查询找到匹配项并获取记录,包括了MySQL查询找到匹配项并获取记录的使用技巧和注意事项,需要的朋友参考一下 要从记录中查找匹配项,请使用MySQL 。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查找与ID 1和11匹配并获取记录的查询- 这将产生以下输出-

  • find 查找匹配标准的记录,可以链式查询(见下文): Person.find({status:'active'}, function(err, results) { // ... }); 你也可以限制结果的个数,这条语句限制结果为10个: Person.find({status:'active'}, 10, function(err, results) { // ... }); Pers

  • 问题内容: 我的数据库表中具有以下格式的数据: 该列将来自该列的数据作为父记录。带有值的表示根项目。我需要编写查询以按以下顺序获取数据: 我需要得到根记录(与记录为0),然后是所有和这根记录,然后获得下根的记录,然后和在这个根记录等等。 问题答案: 我在这里提出的解决方案使用了物化路径的概念。以下是使用样本数据的实例化路径的示例。我希望它可以帮助您理解物化路径的概念: 每个节点都有一个实例化路径,

  • 我在数据库中有两个带有绑定主键的表,我希望在它们之间找到一个不相交的集。例如 有列()和示例数据: 那么,我如何创建一个SQL查询,以便我可以从中获取没有在中的带有ID的行。在这种情况下,应该返回吗? PS:ID是这两个表的主键。

  • 问题内容: 我想在MySQL数据库中提取重复记录。这可以通过以下方式完成: 结果是: 我想将其拉出,以使其显示重复的每一行。就像是: 关于如何做到这一点有什么想法?我试图避免做第一个,然后在代码中用第二个查询查找重复项。 问题答案: 关键是重写此查询,以便可以将其用作子查询。