aravindnass Ответов: 8

Чтобы найти первую и последнюю записи в данной таблице


эй...


Мне нужен запрос, чтобы найти первую и последнюю записи в данной таблице, но я хочу получить результат по некоторому условию..

вот мои табличные данные :

No.       starttime  Endtime
-------   ---------  --------
0500000001  06:52   06:59
0500000001  07:00   07:27
0500000001  07:28   08:09
0500000001  08:14   08:40
0500000001  08:42   10:00
0500000001  10:01   11:29
0500000001  11:31   12:41
0500000001  12:43   13:28
0500000144  10:59   11:03
0500000144  11:03   11:04
0500000144  11:05   11:07
0500000144  11:08   11:37
0500000144  11:37   09:47
0500000144  09:47   09:51
0500000144  09:52   09:53
0500000144  09:54   10:46
0500000144  10:47   11:12
0500000144  11:13   11:16
0500000144  11:17   13:02
0500000144  13:02   09:29
0500000144  13:29   09:29



здесь я хочу, чтобы мой результат был примерно таким

No.          starttime     Endtime
  ------        ----------   --------
  0500000001    06:52         13:28
  0500000144    10:59         09:29


т. е. первой записи и последней записи нет.

Есть идеи, как написать запрос в mysql...?

8 Ответов

Рейтинг:
39

syed shanu

Чтобы получить первую и последнюю запись из SQL-запроса, попробуйте сделать вот так.

SELECT *
FROM table1
WHERE id IN (
SELECT TOP 1 MIN(id) ids
FROM table1
UNION ALL
SELECT TOP 1 MAX(id) ids
FROM table1)


В вашем случае
SELECT *
FROM yourTableName
WHERE id No(
SELECT TOP 1 MIN(No) ids
FROM yourTableName
UNION ALL
SELECT TOP 1 MAX(No) ids
FROM yourTableName
)


aravindnass

Мне нужен запрос mysql..Главное ключевое слово не работает...

syed shanu

В случае MYSQL вам нужно ограничить.
выбрать * из таблица где ID=? (выберите ID от того, вкладке tab1 по столбцу col1 АСК лимит 1;)
или id=(выберите id из заказа tab1 по col1 desc limit 1; )


Проверьте эту ссылку
http://stackoverflow.com/questions/2735395/how-to-find-first-and-last-record-from-mysql-table
http://stackoverflow.com/questions/1143487/how-to-get-the-first-and-last-record-of-db

http://stackoverflow.com/questions/14334805/mysql-getting-first-and-last-record-of-grouping

Тем временем попробуйте использовать google в google вы можете получить все свои ответы.

Рейтинг:
30

ArunRajendra

Попробуйте этот код. Замените имя таблицы и столбца в соответствии с вашим дизайном.

select No, MIN(starttime),MAX(endtime) from table1
group by No


Рейтинг:
2

Member 10428928

Чтобы получить первые 10 записей:
выберите столбец col1,столбец col2,кол3 от того, вкладке tab1 предела col1 и АСК 10;

Чтобы получить последние 10 записей:
выберите столбец col1,столбец col2,кол3 от того, вкладке tab1 предела col1 и АСК 10;


CHill60

Ничем не отличается от решения 5, опубликованного 5 лет назад, и ОП хотел только первую и последнюю одиночную запись, а не первую 10 и последнюю 10.
Если вы собираетесь публиковать решения вопросов, на которые уже были даны ответы, особенно если одно или несколько решений были приняты, то убедитесь, что вы вносите что-то новое в поток, а не просто повторяете то, что уже было опубликовано кем-то другим

Рейтинг:
1

ridoy

Вы Гугл[^- это?
Попробуйте в этом формате..
Чтобы получить первую запись:

select col1,col2,col3 from tab1 order by col1 asc limit 1;

Чтобы получить последнюю запись:
select col1,col2,col3 from tab1 order by col1 desc limit 1;


Рейтинг:
1

Mukesh Ghosh

Попробуй вот так

DECLARE @Vehicle TABLE (
VehicleNo NVARCHAR(50),Datetime1 Datetime,Datetime2 Datetime);
INSERT INTO @Vehicle (VehicleNo,Datetime1,Datetime2)
VALUES('0500000001','06:52','06:59')
INSERT INTO @Vehicle (VehicleNo,Datetime1,Datetime2)
VALUES('0500000001','07:00','07:27')
INSERT INTO @Vehicle (VehicleNo,Datetime1,Datetime2)
VALUES('0500000144','10:59','11:03')

SELECT top 1 * FROM @Vehicle WHERE VehicleNo=(SELECT MIN(VehicleNo) FROM @Vehicle)
UNION
SELECT top 1 * FROM @Vehicle WHERE VehicleNo=(SELECT MAX(VehicleNo) FROM @Vehicle)


aravindnass

Мне нужен запрос mysql..Главное ключевое слово не работает...

Рейтинг:
1

Member 14918713

Выбрать * из(выбрать е.*,функции row_number() над(приказ от номера строки по возрастанию), а рс от EMP_INFO Е,) где RS=1
СОЮЗ ВСЕХ
Выбрать * из(выбрать е.*,функции row_number() над(приказ от номера строки по убыванию) как RS от EMP_INFO Е,) где RS=1;


Richard MacCutchan

Уже хорошо ответили семь лет назад.

Рейтинг:
0

Vijay Bavoor

Попробовать это

содержание таблицы

SELECT TOP [Number]
      ,[StratTime]
      ,[EndTime]
  FROM [TestingData].[dbo].[Table_1]


Number	StratTime	EndTime
500000001	06:52:00.0000	06:59:00.0000
500000001	08:00:00.0000	08:45:00.0000
500000001	07:00:00.0000	07:45:00.0000



Результат

SELECT [Number]
      ,Min(StratTime)
      ,Max(EndTime)
  FROM [TestingData].[dbo].[Table_1]
  Group by Number


Number	(No column name)	(No column name)
500000001	06:52:00.0000	08:45:00.0000


Richard Deeming

Как уже упоминалось в решении № 4.

CHill60

И та же проблема, что и в решении 4 - Вы не выбрали записи. Внимательно прочитайте вопрос!