我有问题(我想有点问题),我希望,你会帮助我的.我使用Sybase Anywhere,这是我的代码:
SELECT TOP 4 Person.Id_person, Person.Name, Person.Surname, Visit.Date, Visit.Place
From Person, Visit
WHERE Visit.Id_person = Person.Id_person
ORDER BY Visit.DATE DESC
Run Code Online (Sandbox Code Playgroud)
这是结果:
3 | Paul | McDonald | 2010-01-19 | Ohio
3 | Paul | McDonald | 2010-01-18 | New York
19 | Ted | Malicky | 2009-12-24 | Tokyo
12 | Meg | Newton | 2009-10-13 | Warsaw
Run Code Online (Sandbox Code Playgroud)
我不想复制保罗麦克唐纳,并且只有第一次(按日期)访问.我想得到这样的结果:
3 | Paul | McDonald | 2010-01-19 | Ohio
19 | Ted | Malicky | 2009-12-24 | Tokyo
12 | Meg | Newton | 2009-10-13 | Warsaw
....
Run Code Online (Sandbox Code Playgroud)
我该怎么办?你可以帮帮我吗?:(
您可以添加一个where not exists子句来过滤掉较早的访问:
SELECT TOP 4 p1.Id_person, p1.Name, p1.Surname, v1.Date, v1.Place
FROM Person p1, Visit v1
WHERE p1.Id_person = v1.Id_person
AND NOT EXISTS (
SELECT *
From Person p2, Visit v2
WHERE v2.Id_person = p2.Id_person
AND p1.Id_person = p2.Id_person
AND v2.Date > v1.Date
)
ORDER BY v1.DATE DESC
Run Code Online (Sandbox Code Playgroud)
为了提高可读性,请考虑将双精度重写from为联接。例如,更改:
FROM Person v1, Visit v1
WHERE v1.Id_person = p1.Id_person
Run Code Online (Sandbox Code Playgroud)
进入:
FROM Person p1
INNER JOIN Visit v1 ON v1.Id_person = p1.Id_person
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4621 次 |
| 最近记录: |