MySQL子查询作为列_在MySQL子查询中选择多个列/字段

是的,你可以这样做。您需要的诀窍是有两种方法可以从表服务器中获取表。一种方法是......

FROM TABLE A另一种方式是

FROM (SELECT col as name1, col2 as name 2 FROM ...) B请注意,select子句及其周围的括号是一个表,一个虚拟表。

所以,使用你的第二个代码示例(我猜你希望在这里检索的列):

SELECT a.attr, b.id, b.trans, b.lang

FROM attribute a

JOIN (

SELECT at.id AS id, at.translation AS trans, at.language AS lang, a.attribute

FROM attributeTranslation at

) b ON (a.id = b.attribute AND b.lang = 1)请注意,您的真实表attribute是此连接中的第一个表,并且我称为b的虚拟表是第二个表。

当虚拟表是某种汇总表时,这种技术特别方便。例如

SELECT a.attr, b.id, b.trans, b.lang, c.langcount

FROM attribute a

JOIN (

SELECT at.id AS id, at.translation AS trans, at.language AS lang, at.attribute

FROM attributeTranslation at

) b ON (a.id = b.attribute AND b.lang = 1)

JOIN (

SELECT count(*) AS langcount, at.attribute

FROM attributeTranslation at

GROUP BY at.attribute

) c ON (a.id = c.attribute)看看怎么样?您已生成包含两列的虚拟表c,将其连接到另外两列,使用ON子句中的一列,并将另一列作为结果集中的列返回。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值