我想创建一个查询,如果特定字段的值不是0,则从另一个表中查找值。像这样?
SELECT id, name, type, site_id
IF (site_id > 0)
THEN (SELECT id FROM setups WHERE setups.id = image.site_id) as site
ELSE "" as site
FROM image
ORDER BY image.id
只有当site_id
的值不为0并且基于site_id
的值时,有人可以帮我解释在中间执行SELECT的语法。如果site_id = 0,我需要返回一个空字符串。
谢谢!
答案 0 :(得分:2)
您可以使用相关子查询和case
(我更喜欢if
函数)执行此操作:
SELECT i.id, i.name, i.type, i.site_id,
(CASE WHEN i.site_id > 0
THEN (SELECT s.id FROM setups s WHERE s.id = i.site_id)
ELSE ''
END) as site
FROM image i
ORDER BY i.id
答案 1 :(得分:0)
如果您需要设置中的相关ID,我建议:
SELECT `image`.`id`, `image`.`name`, `image`.`type`, `setups`.`id` as site_id FROM `image`, `setups` WHERE `setups`.`id`=`image`.`site_id`
如果 site_id 为0,它将被取消,只显示匹配的行,子查询与whit连接相比非常慢