问题描述
示例:
TABLE1
|ID: (AI) |title: | content: | image_id |
|1 | some | something| 1 |
TABLE 2
|ID: (AI) |title: | src: |
|1 | any | base64...|
我想要哪个结果:
select_result = [
{
title: some,content: something,image: {
title: any,src: 'base64..'
},}
]
我尝试过的事情:
SELECT title,content,(SELECT * FROM TABLE2 WHERE id = image_id) as 'image' from TABLE1;
错误:
code: 'ER_OPERAND_COLUMNS',errno: 1241,sqlMessage: 'Operand should contain 1 column(s)',
此子查询正在运行,但我需要其他结构:
SELECT title,(SELECT src FROM TABLE2 WHERE id = image_id) as 'image' from TABLE1;
解决方法
您已经发现,子查询必须返回单个列。如果需要更多列,请使用联接而不是子查询。
SELECT t1.title,t1.content,t2.*
FROM TABLE1 t1
LEFT JOIN TABLE2 t2 ON t2.id = t1.image_id;
注意:LEFT JOIN
表示联接是可选的,即,即使表2中没有链接项,联接仍将返回表1中的项。如果联接是强制性的,请使用JOIN
而不是{ {1}}。