【问题标题】:INNER JOIN selects only one row from second tableINNER JOIN 从第二个表中只选择一行
【发布时间】:2017-03-18 22:08:47
【问题描述】:

我想使用 mysql 内连接获取第二个表的最后一个值。

这是我的第一个表名 'tb_reg'

第二张表'tb_stud_qulification'

我想获取“candidate_no”的最后日期,其中第一个表“id”等于第二个表“candidate_no”。

我写了这样的内部连接代码,但出现错误

SELECT reg.*, quli.course, quli.total_per 
FROM  tb_reg AS reg 
INNER JOIN tb_stud_qulification AS quli ON reg.stage = '2' AND reg.id = quli.candidate_no AND 
ORDER BY quli.id 
LIMIT 1

我想得到这样的结果

【问题讨论】:

  • 您的联接以“and”结尾,所以这不是有效的 SQL
  • 第二个表中没有日期列。

标签: mysql join


【解决方案1】:

你可以显示:

`http://stackoverflow.com/questions/8821920/sql-sqlite-select-with-inner-join`

示例:

SELECT doctors.doctor_id,doctors.doctor_name,visits.patient_name             
FROM doctors  
INNER JOIN visits          
ON doctors.doctor_id=visits.doctor_id  
WHERE doctors.degree='MD'; 

【讨论】:

  • 如果没有学位规范,我想获得“id”的最后一个资格(课程)
【解决方案2】:

我会这样写(注意不同的 ON 和 WHERE 子句)

SELECT reg.*, quli.course, quli.total_per 
FROM  tb_reg AS reg 
INNER JOIN tb_stud_qulification AS quli ON reg.id = quli.candidate_no 
WHERE reg.stage = '2' 
ORDER BY quli.id 
LIMIT 1

但除此之外,我在您的 tb_reg 表中看不到 stage 字段...

【讨论】:

  • 这里我只得到 1 个值,我想得到 2 行,因为 'id' 匹配两个 'candidate_no' 对吗?如何获取最后一个候选数字值?
  • 我想这还需要GROUP BY quli.id 而不是LIMIT - 但那stage呢?
猜你喜欢
  • 2012-09-13
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 1970-01-01
  • 2012-10-10
  • 2013-03-02
相关资源
最近更新 更多