关于列中的select查询 - mysql

时间:2015-10-22 06:26:18

标签: mysql mysqli mysql-workbench

希望在主选择查询的列中具有从select查询返回的多个列。得到mysql错误。我该怎么办?

SELECT test.val1, 
   (SELECT 
     cc.id, cc.nbr,cc.addr
     FROM
        (
          Select temptable.id ,temptable.nbr,temptable.addr
          from temptable
          inner join temptable2  on temptable2.id=temptable.id
        )  cc),
       test.val2,
       test.val3
 FROM test 
 innerjoin test2 on test.id=test2.id

2 个答案:

答案 0 :(得分:1)

选择列表中的子查询必须返回1个字段和1个记录。如果希望来自多个字段的值出现在单个列中,则可以使用concat()或concat_ws()mysql函数将它们连接到单个字段中。如果要将多个字段和多个行组合到一个字段中,那么在上述两个函数之上,您将需要group_concat()

select concat_ws(';',field1, field2) from table

但是,我认为在这种特殊情况下,您可能希望将子查询放在from子句中,并在select子句中引用其中的列。

答案 1 :(得分:0)

如果四个表相关,请尝试以下方法。

选择tb1.tb_id,tb1.val1,tb2.tb_id from(选择test.id为tb_id,val1,val2,val3,来自test.id = test2.id上的test inner join test2)作为tb1 join(select temptable。 id为tb_id,来自temptable,temptable,temptable.id = temptable2.id),tb2在tb2.tb_id = tb1.tb_id;