在标准 SQL 中,你可以这样写:
select r.house_id,r.create_date,r..color
from room r
where r.house_id = 5
order by r.create_date desc
offset 0 row fetch first 1 row only;
请注意,不需要 house
表。如果您确实需要其中的列,则可以使用 join
/on
语法。
并非所有数据库都支持标准的 offset
/fetch
子句。根据您的数据库,您可能需要使用 limit
、select top
或其他内容。
以上在 SQL Server 中有效,但可能更常见的写法是:
select top (1) r.house_id,r..color
from room r
where r.house_id = 5
order by r.create_date desc;
,
一个选项是 WITH TIES
并且最好使用显式 JOIN
如果您想查看平局,请将 row_number()
更改为 dense_rank()
select top 1 with ties
house.house_id,room.create_date,room.color
from house
join room on house.house_id = room.house_id
Where house.house_id = 5
Order by row_number() over (partition by house.house_ID order by room.create_date desc)
,
将此扩展为适用于任意数量的房屋(而不是仅适用于一所房屋)...
SELECT
house.*,room.*
FROM
house
OUTER APPLY
(
SELECT TOP (1) room.create_date,room.color
FROM room
WHERE house.house_id = room.house_id
ORDER BY room.create_date DESC
)
AS room
,
您可以按 create_date 排序,然后选择前 1 个:
select top 1 house.house_id,room.color
from house,room
where house.house_id = room.house_id
and house.house_id = 5
order by room.create_date desc
本文链接:https://www.f2er.com/13659.html