2016-11-25 5 views
0

私は今日の非常に最初のレコードと現在の日の最後のレコードを見つけなければならない(今).Howそれを取得しますか?単一のクエリで両方の行を取得するにはどのようにmysqlのテーブルからだけ今日は、記録のための最初と最後のレコードを見つけるには?

+0

あなたのテーブルには、DATETIMEまたはDATEが含まれていますまたはTIME列? あなたは「今日」と言うとき、あなたは何を意味するのですか?今日のタイムスタンプの行?または今日追加された行?このようなものをupvotes – Tchopane

+1

? – Strawberry

+0

は、この質問は – Rahul

答えて

2

、あなたの日付列がDATEフィールドで、あなたはこのような何かだろうと仮定して:あなたの場合は、この例では、最適/良いではないかもしれないことを

SELECT * FROM (SELECT * FROM `table` WHERE `date_column` = CURDATE() ORDER BY id ASC LIMIT 1) tb1 
UNION 
SELECT * FROM (SELECT * FROM `table` WHERE `date_column` = CURDATE() ORDER BY id DESC LIMIT 1) tb2 

注意を列の型が別の形式であるか、日付が別の形式で保存されています。しかし、あなたはそれを指定しなかった。組合による順序はあなたが動の選択したテーブルからの選択を使用して、この制限をオーバーライドすることができ、別の方法で選択possibileではないという事実により

+1

あなたがはい、もう少し – scaisEdge

+0

@scaisEdgeを照会laborate必要がありますので、組合は...ではなく、一つだけ...分離した2つの順序を許可していませんupvotesに値するたもの、@Strawberryとそこに同意しませんあなたが正しいです。私は逃しました。 。.. upvotedコード – Ibrahim

+0

を更新しました.... – scaisEdge

0

このよう

select * from 
    (SELECT * FROM `table` WHERE `date_column` = CURDATE() ORDER BY id ASC LIMIT 1) t1 
    UNION 
    select * from 
    (SELECT * FROM `table` WHERE `date_column` = CURDATE() ORDER BY id DESC LIMIT 1) t2 
0
SELECT * FROM your_table WHERE ID IN (
     SELECT a.* 
     FROM 
     (
       SELECT MIN(ID) 
       FROM your_table 
       WHERE date_column BETWEEN '2016-11-25 00:00:00' AND '2016-11-25 23:59:59' 
       UNION 
       SELECT MAX(ID) 
       FROM your_table 
       WHERE date_column BETWEEN '2016-11-25 00:00:00' AND '2016-11-25 23:59:59' 
     )a 
); 
関連する問題