MySQL子查询从另一个表中选择SELECT

时间:2015-07-07 01:48:43

标签: mysql subquery

我想创建一个查询,如果特定字段的值不是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,我需要返回一个空字符串。

谢谢!

2 个答案:

答案 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连接相比非常慢