大家帮忙解决一个SQL语句的问题,两张表的关联查询

select*fromawhereexitsts(selectcount(*)frombwhereb.uid=a.uidandb.viewFlag=1andb.EndDa... select * from a where exitsts(select count(*) from b where b.uid=a.uid and b.viewFlag=1 and b.EndDate>=getdate())>0) order by a.id desc

a表是企业信息表,b表是企业发布的职位表,两个表中有相互关联的字段,就是a表中的uid就是企业的用户名,b表中也有记录发布职位的企业的用户名 b.uid,

viewFlag表示职位是否显示,
enddate表示职位截止时间,
我想达到的效果就是通过这条查询语句,返回发布了职位的企业
现在遇到了一个新问题:我现在有一个字符串2011-6-7

sQL语句不允许用字符串与getdate()比较大小,现在我应该怎样写语句,select '2011-6-7'<getdate()

应该怎样转换,麻烦你,告诉我一下
展开
 我来答
tanzongyao233
2011-09-04 · TA获得超过288个赞
知道小有建树答主
回答量:595
采纳率:100%
帮助的人:220万
展开全部
select * from a
left join b on a.uid=b.uid where b.viewflag=1 and b.endate>=getdate()
order by a.id desc
这个比inner join 快点
inner join 要相互匹配
left join 把左边的表 移到主表
数据不会丢失
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MCE 中国
2025-03-12 广告
以下是虚拟筛选的简要流程图说明:1. **调研靶点**:确认是否有参考药物与结合模式信息。2. **建立模型**:基于靶点蛋白结构,参考已有药物结合信息或预测药物结合模式。3. **选择库源**:从多样性化合物库、上市药物分子库等中挑选合适... 点击进入详情页
本回答由MCE 中国提供
wzsjzjjxy
2011-09-03 · TA获得超过3258个赞
知道大有可为答主
回答量:4175
采纳率:0%
帮助的人:1861万
展开全部
select * from a where exitsts(select * from b where b.uid=a.uid and b.viewFlag=1 and b.EndDate>=getdate())>0) order by a.id desc

或者
select * from a inner join b on a.uid=b.uid
where b.viewflag=1 and b.endate>=getdate()
order by a.id desc
追问
我采用的您的第2种方法,不知道第一种方法和第2种方法哪个执行的速度会快一点?
现在遇到了一个新问题:我现在有一个字符串2011-6-7

sQL语句不允许用字符串与getdate()比较大小,现在我应该怎样写语句,select '2011-6-7'<getdate()

应该怎样转换,麻烦你,告诉我一下
追答
第二种比较严谨,你的写法是落后的,处理复杂链接会有漏洞,被微软抛弃了。效率也是第二种好
比较的话需要把getdate转换成字符型或把字符型转换成日期型
‘2011-6-7’<convert(varchar(10),getdate())试试,
或者cast('2011-6-7' as datetime)<getdate()
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
闫元白
2011-09-05 · TA获得超过145个赞
知道答主
回答量:282
采纳率:0%
帮助的人:157万
展开全部
你的意思应该是处理某个逻辑时会运用到两张表的数据吧,实现方法有很多啊!关于java WEB数据库编程建议学一些基础框架!(如hibernate)
至于上面你提出的问题,你可以设计一个中间javabean,作为数据储存专用!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
灵鸣帅哥
2011-09-03 · 超过31用户采纳过TA的回答
知道答主
回答量:103
采纳率:0%
帮助的人:59.8万
展开全部
select * from a where a.uid in ( select b.uid from b where b.viewFlag=1 and b.EndDate>=getdate() group by b.uid ) order by a.id desc 这个执行效率不是很好
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
真灵级存在
2011-09-03 · TA获得超过853个赞
知道小有建树答主
回答量:191
采纳率:0%
帮助的人:177万
展开全部
select * from a where exitsts
(select * from b where b.uid=a.uid and b.viewFlag=1 and b.EndDate>=getdate())
order by id desc
追问
现在遇到了一个新问题:我现在有一个字符串2011-6-7 

sQL语句不允许用字符串与getdate()比较大小,现在我应该怎样写语句,select '2011-6-7'<getdate()

应该怎样转换,麻烦你,告诉我一下
追答
SQL SERVER 时间格式的字符数据可以与datetime数据隐式转换,所以是可以比较的。mysql、oracel数据库也是可以的。
字符转换为日期的函数
SQL SERVER
CAST('2011-6-7' as datetime)
或CONVERT(datetime,'2011-6-7',120)
oracle
to_date('2011-6-7');
mysql
STR_TO_DATE('2011-6-7','%Y-%m-%d' )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式