You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中使用子查询配合INNER JOIN合并两条可正常运行的SQL语句

你给出的第二段查询已经通过关联逻辑引入了tblpatient表,直接把年龄计算逻辑加入查询字段即可完成合并,无需额外嵌套子查询,合并后的规范写法如下:

SELECT pres.*, 
       CONCAT(p.fname,' ',p.lname) AS pname,
       p.gender,
       p.address,
       DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), STR_TO_DATE(p.dob, '%c/%e/%Y'))), '%Y') + 0 AS Age
FROM prescription pres 
INNER JOIN tblpatient p ON p.id = pres.patient_id
WHERE pres.id = '$user_id' 
LIMIT 1

如果要求必须通过子查询实现,可按如下写法调整,把年龄计算逻辑封装为关联子查询:

SELECT pres.*, 
       CONCAT(p.fname,' ',p.lname) AS pname,
       p.gender,
       p.address,
       (SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(NOW(), STR_TO_DATE(dob, '%c/%e/%Y'))), '%Y') + 0 
        FROM tblpatient 
        WHERE id = pres.patient_id) AS Age
FROM prescription pres 
INNER JOIN tblpatient p ON p.id = pres.patient_id
WHERE pres.id = '$user_id' 
LIMIT 1

注意:直接拼接$user_id到SQL语句中存在SQL注入风险,生产环境建议使用预编译语句处理动态传参。

内容的提问来源于stack exchange,提问作者Rose Ann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 08:15:04