我想創建一個查詢,我只找到具有最早和最近registration_date的成員的詳細信息。到目前爲止,我有查找最小和最大日期SQL
SELECT member_id, UPPER(name), registration_date
from db.member WHERE registration_date >=
'2012-01-01'
我不確定如何找到剛纔最小/最大,但我只是在設定日期的測試它2012-01-01
所以查詢應該只帶回兩個結果 - 分鐘/最大
預先感謝您
我想創建一個查詢,我只找到具有最早和最近registration_date的成員的詳細信息。到目前爲止,我有查找最小和最大日期SQL
SELECT member_id, UPPER(name), registration_date
from db.member WHERE registration_date >=
'2012-01-01'
我不確定如何找到剛纔最小/最大,但我只是在設定日期的測試它2012-01-01
所以查詢應該只帶回兩個結果 - 分鐘/最大
預先感謝您
你可以得到一個子查詢min
,max
日期,然後可以得到結果。
select member_id, upper(name), registration_date
from db.member
cross join (
select min(registration_date) as minDate, max(registration_date) as maxDate
from db.member) t
where registration_date in (t.minDate, t.maxDate)
,或者你可以用in
做到這一點,union
select member_id, upper(name), registration_date
from db.member
where registration_date in (
select min(registration_date)
from db.member
union
select max(registration_date) as maxDate
from db.member)
選擇分鐘從TBL(dateColumn),MAX(dateColumn);
類似於下面的內容,雖然有些子查詢很重,但可能會使您更接近您所需的內容。根據你的SQL的風格(Oracle,SQLServer,MySQL等),你可以限制IN結果集子查詢中的member_id選擇的子查詢。
select member_id, Upper(name) AS name, registration_date
from db.member
where member_id in
(
select Min(member_id)
from db.member
where registration_date =
(
select Min(registration_date)
from db.member
)
union all
select Max(member_id)
from db.member
where registration_date =
(
select Max(registration_date)
from db.member
)
)
order by registration_date desc;
在起飛的機會是最小和最大日期有/日期(根據您的列數據類型是什麼)多個相同的時間戳,你應該升序排序REGISTRATION_DATE您分鐘子查詢和搶前1,和最大子查詢,按registration_date降序排序,並抓取top 1以確保您不會獲得兩個以上的記錄。在子查詢中執行此操作,如果您在外部查詢中執行此操作,則可能會收到2分鐘或2秒的風險。 – gmiley