关于列中的选择查询 - mysql
Posted
技术标签:
【中文标题】关于列中的选择查询 - mysql【英文标题】:Regarding select query in the column 【发布时间】:2016-01-21 08:28:18 【问题描述】:希望在主选择查询的列中具有从选择查询返回的多个列。得到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
【问题讨论】:
temptable 或 temptable2 是否以某种方式与 test 或 test2 表相关,或者您是否有意构建笛卡尔积。 【参考方案1】:选择列表中的子查询必须返回 1 个字段和 1 个记录。如果您希望来自多个字段的值出现在单个列中,那么您可以使用concat() 或 concat_ws() mysql 函数将它们连接到单个字段中。如果你想将多个字段和多行组合成一个字段,那么上面提到的2个函数你需要group_concat()。
select concat_ws(';',field1, field2) from table
但是,我认为在这种特殊情况下,您可能希望将子查询放入 from 子句并在 select 子句中从那里引用列。
【讨论】:
【参考方案2】:如果四个表相关,请尝试以下。
select tb1.tb_id, tb1.val1, tb2.tb_id from (select test.id as tb_id, val1, val2, val3 from test inner join test2 on test.id=test2.id) as tb1 join (select temptable. id as tb_id from temptable join temptable2 on temptable.id=temptable2.id) as tb2 on tb2.tb_id=tb1.tb_id;
【讨论】:
以上是关于关于列中的选择查询 - mysql的主要内容,如果未能解决你的问题,请参考以下文章