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,它会被丢弃,只显示匹配的行,子查询与连接
相比非常慢
如果特定字段的值不为 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,它会被丢弃,只显示匹配的行,子查询与连接
相比非常慢