MySQL:尝试根据大小写选择表,收到错误代码:1241个操作数应包含1列
我正在尝试创建一个查询,该查询根据另一个表(oss)中特定项的当前值返回相关表(cld)-但是,当前接收到以下查询的“错误代码:1241操作数应包含1列”:MySQL:尝试根据大小写选择表,收到错误代码:1241个操作数应包含1列,mysql,case,Mysql,Case,我正在尝试创建一个查询,该查询根据另一个表(oss)中特定项的当前值返回相关表(cld)-但是,当前接收到以下查询的“错误代码:1241操作数应包含1列”: SELECT CASE WHEN oss.`creative_link_data` IS NOT NULL THEN (SELECT * FROM `facebook_creative_link_data`) END FROM adgroup a JOIN `creative` c ON c.`parent_id` = a.`uuid`
SELECT
CASE
WHEN oss.`creative_link_data` IS NOT NULL THEN (SELECT * FROM `facebook_creative_link_data`)
END
FROM adgroup a
JOIN `creative` c ON c.`parent_id` = a.`uuid`
LEFT JOIN `facebook_object_story_spec` oss ON oss.`id` = c.`object_story_spec`
LEFT JOIN `facebook_creative_link_data` cld ON cld.`id` = oss.`creative_link_data`
WHERE TRUE
AND a.`uuid` = 12345
;
尝试仅从表中选择ID列会导致此错误“错误代码:1242
子查询返回多行“
但是,删除大小写并仅选择ID只返回1行
这是语法错误吗?是否有错误?为避免与子查询结果相关的问题,应选择一列并将结果行数限制为1
SELECT
CASE
WHEN oss.`creative_link_data` IS NOT NULL THEN (
SELECT ID
FROM `facebook_creative_link_data`
LIMIT 1)
END
FROM adgroup a
JOIN `creative` c ON c.`parent_id` = a.`uuid`
LEFT JOIN `facebook_object_story_spec` oss ON oss.`id` = c.`object_story_spec`
LEFT JOIN `facebook_creative_link_data` cld ON cld.`id` = oss.`creative_link_data`
WHERE TRUE
AND a.`uuid` = 12345
;
无论如何,case条件应该是使用内部联接的结果
SELECT *
FROM adgroup a
JOIN `creative` c ON c.`parent_id` = a.`uuid`
LEFT JOIN `facebook_object_story_spec` oss ON oss.`id` = c.`object_story_spec`
INNER JOIN `facebook_creative_link_data` cld ON cld.`id` = oss.`creative_link_data`
WHERE TRUE
AND a.`uuid` = 12345
;
在子查询中,您试图获取多个行,但它包含多个列。所以你应该像这样使用-
selectid fromFacebook\u creative\u link\u data Limit 1