我有以下查询,我想用一个IF条件修改这个查询,如下所示:
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语句需要替换:
join morphology
on morphology.morphology_code = specimen.snop_code
join functions
on functions.functions_code = specimen.snop_code发布于 2014-09-29 03:01:17
将specimen.snop_axis (等于或,不等于)的逻辑包含到两个表的联接条件中,如下所示:
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'
;发布于 2014-09-29 03:01:08
SQL查询只能返回一组固定的列。您可以使用动态SQL来做您想做的事情,但不能使用常规的SQL查询。
当样本不匹配时,您可以添加额外的列,并让它们成为NULL:
from条款将继续:
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值。
https://stackoverflow.com/questions/26091845
复制相似问题