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

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()

应该怎样转换,麻烦你,告诉我一下

第1个回答  2011-09-04
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 把左边的表 移到主表
数据不会丢失
第2个回答  2011-09-03
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()

本回答被提问者采纳
第3个回答  2011-09-05
你的意思应该是处理某个逻辑时会运用到两张表的数据吧,实现方法有很多啊!关于java WEB数据库编程建议学一些基础框架!(如hibernate)
至于上面你提出的问题,你可以设计一个中间javabean,作为数据储存专用!
第4个回答  2011-09-03
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 这个执行效率不是很好
第5个回答  2011-09-03
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' )

sql语句:一个表和另外两个表的关联语句?
如果你是完成两个表的关联,那直接查询就可以了;如果你要完成一个表同时查询,就可以使用给表起别名的办法。两个不同的表的关联查询如下:select from a,b where 条件 同一个表的关联查询:select from a A,where a.*=A.

两表关联查询SQL语句的,要怎么写?
1、创建测试表;create table company(companyId number, companyName varchar2(20), contacts varchar2(20));create table users(userId number, companyId number, userName varchar2(20), userAge number, address varchar2(20));2、插入测试数据;insert into company values (1,'腾讯科技','马...

sql语句 同时查询两个表
‍‍一,两张表关键查询 1、在userinfo(用户信息表)中显示每一个用户属于哪一个部门。sql语句为:select userinfo.user_di,userinfo.user_name,dep_name from userinfo,dep where userinfo.user_dep=dep.dep_id 2、在userinfo(用户信息表)中显示每一个用户的性别。sql语句为:select ...

sql两个表关联查询问题
create sequence B_seq;insert into A values(a_seq.nextval,'hello',1);insert into B values(b_seq.nextval,'hello',1,100);insert into B values(b_seq.nextval,'world',1,100);你想怎么查,查什么?按你说的,select sum(b_money) from a,b where b.b_no=a.a_no and b.b_na...

一个sql语句查询两个表,查出的数据一对多的显示?
as table2 on(bable1.id=table2.id);使用unique查询.查询的结果将返回两个表不重复的数据.;select * from 表1;unique select * from 表2;如果,不是此种意思,先把问题说清楚了,再来问吧..。问问题中,不要加上“俺” ,”偶“ 什么的关键字. . 听了比较烦..。如有不懂百度Hi我..。

sql语句:将两个查询结果关联显示
先union,作为select子查询 再用select 查询,以下是我写的,但是没有数据库,思路就是这样的。如果报错你调一下,不行的话,你就把库里的这两个表给我。我调好了。再给你 select 销售单号, 总计金额,(select 总计金额 from (select 销售单号,总计金额 as 应收 from outs union select '标志符...

C#做一个查询,求一个SQL的查询语句,两个数据库表联查的
select 表1.*, 表2.* ---不知道你要是哪些字段,所以我写了.* 查全部 from 表1 INNER JOIN 表2 on a=b --- (a=b是两个表相关联的字段,你这里可以写你实际的字段)where (表1.票据时间 > 6 and 表2.类型= '客票') and (表1.票据时间 > 3 and 表2.类型= ...

SQL语句如何在两张表中分组查询,而只取一条记录?
sql语句中,关联查询只取分组的一条记录的方法如下:\\x0d\\x0aselectuserid,ranking,usernamefromtable\/\/查询字段有useridusername\\x0d\\x0awhereuserid+rankingin\/\/where条件包括userid+rankingin是集合选择关键字\\x0d\\x0a(\\x0d\\x0aselectuserid+max(ranking)fromtable\/\/max(ranking)选择ranking...

如何用sql语句查询两张表中的相同字段数据
select * from A inner join b on a.col=b.col 除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。下面列出了您可以使用的 JOIN 类型,以及它们之间的差异。JOIN: 如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT...

SQL关联两张表查数据,结果只显示一条。
我的主表是flowertype,子表是flower_info,我要根据主表的id同时修改两个表中鲜花类型相同的字段 如果你是双表关联更改数据,用Navicat for mysql设置一下子表的索引就可以了

相似回答