MYSQL-如何更正SUBSELECT?

问题描述

如何在Node.js MysqL中更正子查询

示例:

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}}。