首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL查询左联接会导致两个输出,但应该只有一个输出

SQL查询左联接会导致两个输出,但应该只有一个输出
EN

Stack Overflow用户
提问于 2015-11-06 10:14:14
回答 2查看 35关注 0票数 0

我在表结构和查询结果方面遇到了问题,我想要的是它只输出一个结果,也就是第一个结果。我应该在我的表结构中进行哪些更改?因为它只返回相同的输出但不同的prf_id。

现在的情况是这样的。tbl_prf是针对人员的请求。tbl_job_plist适用于发布的职位,tbl_applicant适用于申请者。当我在tbl_prf中添加一个条目时,它会从它的引用示例的tbl_job_plist中选择条目。然后,当我试图查看申请者时,需要显示所选tbl_job_plist的tbl_prf ID和ID。这就是我如何想出这个代码的。当我查看申请者时会发生什么,它会选择两个tbl_prf条目,从而导致同一申请者的两个输出。

我正在尝试做的是获得ap_status为1的申请者。正如你所看到的,我只有一个申请者,所以我只期待一个结果。如果prf_job_post_ref和jplist_id相等,那么申请者的名字就会一直显示在结果上。我该如何预防呢?tbl_prf

代码语言:javascript
复制
prf_id       | prf_job_post_ref |           
------------------------------------       
1            |        1         |
3            |        1         |

tbl_job_plist

代码语言:javascript
复制
jplist_id    | jplist_position     |
------------------------------------
1            |        Crew         |

tbl_applicant

代码语言:javascript
复制
ap_id        | ap_position_applied | ap_status | ap_name |
----------------------------------------------------------
1            |        1            |     1     |   Kurt  |

查询

代码语言:javascript
复制
    SELECT
    tbl_applicant.ap_id, 
    tbl_applicant.ap_name,
    tbl_job_plist.jplist_id, 
    tbl_prf.prf_id 
    FROM tbl_applicant 
    LEFT JOIN tbl_job_plist ON tbl_applicant.ap_position_applied = tbl_job_plist.jplist_id 
    LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref 
    WHERE ap_status = 1

结果

代码语言:javascript
复制
ap_id        | jplist_id           | prf_id     | ap_name |
-----------------------------------------------------------
1            |        1            |     1      |   Kurt  |
1            |        1            |     3      |   Kurt  |
EN

回答 2

Stack Overflow用户

发布于 2015-11-10 11:17:18

根据你的评论,只想要一行,而不关心哪一行,你可以使用TOP,如下所示…

代码语言:javascript
复制
SELECT TOP 1
    tbl_applicant.ap_id, 
    tbl_job_plist.jplist_id, 
    tbl_prf.prf_id 
    FROM tbl_applicant 
    LEFT JOIN tbl_job_plist ON tbl_applicant.ap_position_applied = tbl_job_plist.jplist_id 
    LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref 
    WHERE ap_status = 1
票数 0
EN

Stack Overflow用户

发布于 2015-11-10 11:17:26

根据您希望返回这两个拖轮中的哪一个,您可以使用MAX或MIN子查询。所以在

LEFT JOIN tbl_prf ON tbl_job_plist.jplist_id = tbl_prf.prf_job_post_ref

你可以把

代码语言:javascript
复制
and tbl_prf.prf_id =(select max(pe.prf_id) from tbl_prf pe where pe.prf_job_post_ref= tbl_prf.prf_job_post_ref )

这将返回您的示例中值为3的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33558348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档