mysql子查询存到另一张表_在MySQL中使用子查询在同一个表上编写SQL查询

我有一个表svn1:

id | date | startdate

23 2002-12-04 2000-11-11

23 2004-08-19 2005-09-10

23 2002-09-09 2004-08-23

从svn1中选择id,startdate,其中startdate> =(从svn1中选择max(date),其中id = svn1.id);

现在问题是如何让子查询知道id与外部查询中的id匹配.显然id = svn1.id不会工作.谢谢!

If you have the time to read more:

这真的是一个简化版本,询问我在这里想要做什么.我的实际查询是这样的

select

id, count(distinct archdetails.compname)

from

svn1,svn3,archdetails

where

svn1.name='ant'

and svn3.name='ant'

and archdetails.name='ant'

and type='Bug'

and svn1.revno=svn3.revno

and svn3.compname=archdetails.compname

and

(

(startdate>=sdate and startdate<=edate)

or

(

sdate<=(select max(date) from svn1 where type='Bug' and id=svn1.id)

and

edate>=(select max(date) from svn1 where type='Bug' and id=svn1.id)

)

or

(

sdate>=startdate

and

edate<=(select max(date) from svn1 where type='Bug' and id=svn1.id)

)

)

group by id LIMIT 0,40;

当您注意到从svn1中选择max(date)时,type =’Bug’和id = svn1.id必须多次计算.

我可以只计算一次并使用AS存储它,然后再使用该变量.主要问题是纠正id = svn1.id,以便正确地将它等同于外表中的id.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值