получить только первую строку, используя запрос MySQL

Я получил 2 стола

рассказы

id  |  Story Name   | User id
----+---------------+-----------
2   |  Name         |  12
3   |  Name         |  13
4   |  Name         |  12
5   |  Name         |  12
--------------------------------

линии

id  |  Story Line   | story_id |  started_date
----+---------------+----------+------------------------
2   |  Name         |  2       |  2017-02-17 18:20:14
3   |  Name         |  2       |  2017-02-18 18:20:14
4   |  Name         |  3       |  2017-02-18 18:20:14
5   |  Name         |  2       |  2017-02-19 18:20:14
----------------------------------------------------------

Мне нужно получить первую строку из таблицы строк (ASC начального_даты) вместе с таблицей историй

SELECT story.* from stories as story WHERE story.id=2

Используя левое соединение

SELECT story.*
from stories as story
LEFT JOIN lines as line
ON lines.story_id=story.id
WHERE story.id=2

Вот как получить первую запись из таблицы строк?

заранее спасибо

0

Решение

Вы можете попробовать использовать ORDER BY в сочетании с LIMIT Вот. В этом случае мы хотим упорядочить по возрастанию (порядок по умолчанию в MySQL) по started_date от lines таблица, сохраняя при этом только одну запись, соответствующую первой, как вы ее определили.

SELECT story.*, line.*
FROM stories AS story
LEFT JOIN lines AS line
ON lines.story_id = story.id
WHERE story.id=2
ORDER BY lines.started_date
LIMIT 1

Если вы хотите получить самую раннюю запись для всех историй, вам придется использовать подзапрос для этого:

SELECT s.*, l1.*
FROM stories AS s
LEFT JOIN lines l1
ON s.story_id = l1.story_id
INNER JOIN
(
SELECT story_id, MIN(started_date) AS first_date
FROM lines
GROUP BY story_id
) AS l2
ON l1.story_id     = l2.story_id AND
l1.started_date = l2.first_date
1

Другие решения

Попробуй это

SELECT story.*
from stories as s
LEFT JOIN lines as l
ON lines.story_id=story.id
WHERE story.id=2
ORDER BY s.started_date ASC
LIMIT 1
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector