标题:如何查询结果
只看楼主
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:0 
回复 10楼 y12692189
跟上面的数据差不多吧
如果VFP的表不用SQL语句也可以,建立一个userid关联表,从最后往前扫描一次就可以。
2023-03-26 14:54
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:5 
你这个可能做不出来了,至少需要一个自增字段或者其他代表顺序的唯一索引。我看不出来 CreateTime 是否就是你所需要的“最后一次”,只是逻辑上同一 UserId 同一 Datetime 出现两行完全一模一样的记录是有可能的,这样就会导致结果有误。

程序代码:
Create TABLE A (userid CHAR(6),pcharge numeric(9,2),createtime datetime)
INSERT INTO A VALUES('000001',10.21,'2001-01-01 12:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:01')
INSERT INTO A VALUES('000002',10.21,'2011-07-17 05:00')
INSERT INTO A VALUES('000003',10.21,'2021-01-27 03:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-13 02:00')
INSERT INTO A VALUES('000004',10.21,'2008-05-05 16:00')
INSERT INTO A VALUES('000005',10.21,'2009-03-04 17:00')
INSERT INTO A VALUES('000066',10.21,'2017-05-08 14:00')
INSERT INTO A VALUES('000003',10.21,'2023-09-03 13:00')
INSERT INTO A VALUES('000002',10.21,'2020-08-06 18:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:02')
INSERT INTO A VALUES('000002',10.21,'2000-05-09 04:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-06 17:00')
Go 

Select a.* 
    From A a, (Select UserId, Max(CreateTime) As CreateTime From A Group By UserId) t
    Where a.CreateTime = t.CreateTime 
    Order By a.UserId


[此贴子已经被作者于2023-3-26 15:15编辑过]

2023-03-26 15:05
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
回复 12楼 倦猫1973
没问题,您的这个命令没问题,结果就是我想要的,虽然我没看明白
2023-03-26 15:29
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
以下是引用y12692189在2023-3-26 15:29:19的发言:

没问题,您的这个命令没问题,结果就是我想要的,虽然我没看明白


SQL 梗:世界上没有什么问题是一行 SQL 解决不了的,如果有,那就两行。
2023-03-26 15:32
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
程序代码:
Create TABLE A (userid CHAR(6),pcharge numeric(9,2),createtime datetime)
INSERT INTO A VALUES('000001',10.21,'2001-01-01 12:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:01')
INSERT INTO A VALUES('000002',10.21,'2011-07-17 05:00')
INSERT INTO A VALUES('000003',10.21,'2021-01-27 03:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-13 02:00')
INSERT INTO A VALUES('000004',10.21,'2008-05-05 16:00')
INSERT INTO A VALUES('000005',10.21,'2009-03-04 17:00')
INSERT INTO A VALUES('000006',10.21,'2017-05-08 14:00')
INSERT INTO A VALUES('000003',10.21,'2023-09-03 13:00')
INSERT INTO A VALUES('000002',10.21,'2020-08-06 18:00')
INSERT INTO A VALUES('000001',10.21,'2001-06-15 08:02')
INSERT INTO A VALUES('000002',10.21,'2000-05-09 04:00')
INSERT INTO A VALUES('000001',10.21,'2002-03-06 17:00')

Create TABLE B (userid CHAR(6),pwprtype char(5),)
INSERT INTO B VALUES('000001','DJ1')
INSERT INTO B VALUES('000002','DJ5')
INSERT INTO B VALUES('000003','DJ1')
INSERT INTO B VALUES('000004','DJ2')
INSERT INTO B VALUES('000005','DJ5')
INSERT INTO B VALUES('000006','DJ1')
INSERT INTO B VALUES('000007','DJ2')
INSERT INTO B VALUES('000008','DJ5')
INSERT INTO B VALUES('000009','DJ5')


如何查表A中不包含的表B的userid呢?我不知道我说明白了没,就是怎么查出来000007,000008,000009
2023-03-26 16:07
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
回复 15楼 y12692189
程序代码:
Select b.*
    From B b
    Left Join (
            Select a.* 
            From A a, (Select UserId, Max(CreateTime) As CreateTime From A Group By UserId) t
            Where a.CreateTime = t.CreateTime 
            ) t On b.UserId = t.UserId
    Where t.UserId Is Null
2023-03-26 16:15
倦猫1973
Rank: 2
等 级:论坛游民
威 望:1
帖 子:68
专家分:28
注 册:2022-11-17
得分:0 
回复 15楼 y12692189
你的这个需求实现方法非常多,下面这个可能是最简单也是最能被普骗接受的一种了,当然也是神坑最大的一种。

程序代码:
Select b.*
    From B b
    Where b.UserId Not In (Select t.UserId From A t Where b.userid = t.UserId)
    
    
Select b.*
    From B b
    Where Not Exists(Select t.UserId From A t Where b.userid = t.UserId)


[此贴子已经被作者于2023-3-26 16:22编辑过]

2023-03-26 16:20
y12692189
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2021-9-23
得分:0 
谢谢
2023-03-27 14:48



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511682-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.123384 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved