MySQL 从另一个 table 到 SELECT 的子查询

MySQL Subquery to SELECT from another table

如果特定字段的值不为 0,我想创建一个类似从另一个 table 查找值的查询。像这样吗?

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,我需要 return 一个空字符串。

谢谢!

您可以使用相关子查询和 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

如果您需要我推荐的设置中的相关 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,它会被丢弃,只显示匹配的行,子查询与连接

相比非常慢