MySQL-使用IF条件连接表
我有以下查询,我想用MySQL-使用IF条件连接表,mysql,sql,Mysql,Sql,我有以下查询,我想用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 substr
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
SQL查询只能返回一组固定的列。您可以使用动态SQL做您想做的事情,但不能使用常规SQL查询 当样本不匹配时,您可以添加额外的列并使其为
NULL
:
来自的子句将继续:
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
. . .
我不太确定您的加入如何继续。但是如果包含额外条件,则非匹配样本的列将具有NULL
值。SQL查询只能返回一组固定的列。您可以使用动态SQL做您想做的事情,但不能使用常规SQL查询
当样本不匹配时,您可以添加额外的列并使其为NULL
:
来自
的子句将继续:
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
. . .
我不太确定您的加入如何继续。但是如果包含额外条件,则非匹配样本的列将具有NULL
值。SQL查询只能返回一组固定的列。您可以使用动态SQL做您想做的事情,但不能使用常规SQL查询
当样本不匹配时,您可以添加额外的列并使其为NULL
:
来自
的子句将继续:
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
. . .
我不太确定您的加入如何继续。但是如果包含额外条件,则非匹配样本的列将具有NULL
值。SQL查询只能返回一组固定的列。您可以使用动态SQL做您想做的事情,但不能使用常规SQL查询
当样本不匹配时,您可以添加额外的列并使其为NULL
:
来自
的子句将继续:
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
. . .
我不太确定您的加入如何继续。但如果包含额外条件,则非匹配样本的列将具有NULL
值。包括样本的逻辑。snop_轴
(等于或不等于)将包含到两个表的联接条件中,以便按如下方式联接:
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'
;
选择
*
从标本
联合地形图索引
子串上(样本.地形指数,2,2)=
地形索引。地形索引代码
左连接形态学
在sample.snop_轴上='M'和morphics.morphics_代码=sample.snop_代码
左连接函数
在sample.snop_轴“M”和functions.functions_code=sample.snop_code上
左连接样本\u图像\u查找
在样本_图像_lookup.sample_fk=sample.sample_pk上
左连接图像
ON image.image\u pk=样本\u图像\u查找.image\u fk
其中sample.sample_pk=“$sample”
;
将样本的逻辑。snop_轴
(等于或不等于)包含到两个表的联接条件中,以便如下方式联接:
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'
;
选择
*
从标本
联合地形图索引
子串上(样本.地形指数,2,2)=
地形索引。地形索引代码
左连接形态学
在sample.snop_轴上='M'和morphics.morphics_代码=sample.snop_代码
左连接函数
在sample.snop_轴“M”和functions.functions_code=sample.snop_code上
左连接样本\u图像\u查找
在样本_图像_lookup.sample_fk=sample.sample_pk上
左连接图像
ON image.image\u pk=样本\u图像\u查找.image\u fk
其中sample.sample_pk=“$sample”
;
将样本的逻辑。snop_轴
(等于或不等于)包含到两个表的联接条件中,以便如下方式联接:
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'
;
选择
*
从标本
联合地形图索引
子串上(样本.地形指数,2,2)=
地形索引。地形索引代码
左连接形态学
在sample.snop_轴上='M'和morphics.morphics_代码=sample.snop_代码
左连接函数
在sample.snop_轴“M”和functions.functions_code=sample.snop_code上
左连接样本\u图像\u查找
在样本_图像_lookup.sample_fk=sample.sample_pk上
左连接图像
ON image.image\u pk=样本\u图像\u查找.image\u fk
其中sample.sample_pk=“$sample”
;
将样本的逻辑。snop_轴
(等于或不等于)包含到两个表的联接条件中,以便如下方式联接:
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'
;
选择
*
从标本
联合地形图索引
子串上(样本.地形指数,2,2)=
地形索引。地形索引代码
左连接形态学
在sample.snop_轴上='M'和morphics.morphics_代码=sample.snop_代码
左连接函数
在sample.snop_轴“M”和functions.functions_code=sample.snop_code上
左连接样本\u图像\u查找
在样本_图像_lookup.sample_fk=sample.sample_pk上
左连接图像
ON image.image\u pk=样本\u图像\u查找.image\u fk
其中sample.sample_pk=“$sample”
;
是的,我也看到了(你似乎在添加评论)-无论如何谢谢是的,我也看到了(你似乎在添加评论)-无论如何谢谢是的,我也看到了(你似乎在添加评论)-无论如何谢谢是的,我也看到了(你似乎在添加评论)-无论如何谢谢