解决方案 »
- 经典且简单的存储过程,帮我看看。
- sql select 问题
- t-sql中如何将select的结果集存成一个变量,而且select语句是动态变化的
- Access 的'备注'类型相当SQL server中的什么类型啊?急!
- 用sql怎样得到一个已知数据库的数据文件和日志文件的名称?
- 要修改记录,其中有一个字段值可以为null,怎样给这个字段设一个值
- 请教各位高手,此触发器为何出错?
- 如何用数据库实现a地点到b地点的公交线路呢(类似于chinaquest的系统)给高分!
- ~~~~~~这样的结果在SQL中如何实现?~~~~~~~
- 请问数据库系统原理应该如何学习(平衡原理和实操)
- 怎么根据统计出来的次数来改变标志位字段?
- 请教一个数据关联关系的问题
LEFT JOIN [b] AS t
ON a.id=t.id
AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date])多加一个过滤条件。
FROM ta a
INNER JOIN tb b ON a.uid = b.uid
WHERE NOT EXISTS ( SELECT 1
FROM tb
WHERE uid = b.uid
AND [date] > t.[date] )
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'A')
BEGIN
DROP TABLE A
END
GO
CREATE TABLE A
(
ID VARCHAR(10),
Name VARCHAR(10)
)
GO
INSERT INTO A
SELECT '3711021994','张三' UNION
SELECT '3711021989','李四'
GO
IF EXISTS (SELECT 1 FROM SYSOBJECTS WHERE name = 'B')
BEGIN
DROP TABLE B
END
GO
CREATE TABLE B
(
ID VARCHAR(10),
Sex VARCHAR(10),
Gra VARCHAR(10),
Date VARCHAR(10)
)
GO
INSERT INTO B
SELECT '3711021994', '男', '2008毕业', '2012.06.27' UNION
SELECT '3711021994', '女', '2010毕业', '2012.06.28'
GOSELECT A.ID,
A.Name,
Sex,
Gra,
Date
FROM A LEFT OUTER JOIN (
select ID,
Sex,
Gra,
Date
from B AS t
where (select count(*) from B where ID=t.ID and Date>t.Date )<1) AS C ON A.ID = C.ID
IF OBJECT_ID('[A]') IS NOT NULL DROP TABLE [A]
GO
CREATE TABLE [A]([id] BIGINT,[name] VARCHAR(4))
INSERT [A]
SELECT 3711021994,'张三' UNION ALL
SELECT 3711021989,'李四'--> 测试数据:[B]
IF OBJECT_ID('[B]') IS NOT NULL DROP TABLE [B]
GO
CREATE TABLE [B]([id] BIGINT,[sex] VARCHAR(2),[graduate] VARCHAR(8),[date] DATETIME)
INSERT [B]
SELECT 3711021994,'男','2008毕业','2012.06.27' UNION ALL
SELECT 3711021994,'女','2010毕业','2012.06.28'
--------------开始查询--------------------------SELECT * FROM [a]
LEFT JOIN [b] AS t
ON a.id=t.id
AND NOT EXISTS(SELECT 1 FROM b WHERE [id]=t.[id] AND [date]>t.[date])
----------------结果----------------------------
/*
id name id sex graduate date
-------------------- ---- -------------------- ---- -------- -----------------------
3711021994 张三 3711021994 女 2010毕业 2012-06-28 00:00:00.000
3711021989 李四 NULL NULL NULL NULL(2 行受影响)
*/
这样是把B表里有的查出来的.B表里没有的没显示出NULL