首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL -带有IF条件的连接表

MySQL -带有IF条件的连接表
EN

Stack Overflow用户
提问于 2014-09-29 02:47:19
回答 2查看 76关注 0票数 0

我有以下查询,我想用一个IF条件修改这个查询,如下所示:

代码语言:javascript
复制
if(specimen.snop_axis = 'M', join morphology
    on morphology.morphology_code = specimen.snop_code, join functions on functions.functions_code = specimen.snop_code)

select *
  from specimen
  join topography_index
    on substring(specimen.topography_index, 2, 2) =
       topography_index.topography_index_code
  join morphology
    on morphology.morphology_code = specimen.snop_code
  join functions
    on functions.functions_code = specimen.snop_code
  left join specimen_image_lookup
    on specimen_image_lookup.specimen_fk = specimen.specimen_pk
  left join image
    on image.image_pk = specimen_image_lookup.image_fk
 where specimen.specimen_pk = '$specimen'

如何修改此查询以包含此if条件?也就是说,IF语句需要替换:

代码语言:javascript
复制
join morphology
    on morphology.morphology_code = specimen.snop_code
  join functions
    on functions.functions_code = specimen.snop_code
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-29 03:01:17

specimen.snop_axis (等于或,不等于)的逻辑包含到两个表的联接条件中,如下所示:

代码语言:javascript
复制
SELECT
      *
FROM specimen
      JOIN topography_index
                  ON SUBSTRING(specimen.topography_index, 2, 2) =
                        topography_index.topography_index_code
      LEFT JOIN morphology
                  ON specimen.snop_axis = 'M' AND morphology.morphology_code = specimen.snop_code
      LEFT JOIN functions
                  ON specimen.snop_axis <>'M' AND functions.functions_code = specimen.snop_code
      LEFT JOIN specimen_image_lookup
                  ON specimen_image_lookup.specimen_fk = specimen.specimen_pk
      LEFT JOIN image
                  ON image.image_pk = specimen_image_lookup.image_fk
WHERE specimen.specimen_pk = '$specimen'
;
票数 3
EN

Stack Overflow用户

发布于 2014-09-29 03:01:08

SQL查询只能返回一组固定的列。您可以使用动态SQL来做您想做的事情,但不能使用常规的SQL查询。

当样本不匹配时,您可以添加额外的列,并让它们成为NULL

from条款将继续:

代码语言:javascript
复制
left join
image
on image.image_pk = specimen_image_lookup.image_fk left join
morphology
on morphology.morphology_code = specimen.snop_code and specimen.snop_axis = 'M' left join
. . . 

我不太清楚你的join是如何继续的。但是如果包含额外的条件,那么不匹配的样本将具有列的NULL值。

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

https://stackoverflow.com/questions/26091845

复制
相关文章

相似问题

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