希望在主选择查询的列中具有从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
答案 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;