我有 2 张 table
故事
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
----------------------------------------------------------
我需要从行表(started_date 的 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
这里如何从行表中获取第一个条目?
提前致谢
最佳答案
您可以在此处尝试将 ORDER BY
与 LIMIT
结合使用。在本例中,我们希望按 lines
表中的 started_date
升序排序(MySQL 中的默认顺序),同时仅保留一条记录,对应于第一条记录你定义了它。
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
关于php - 使用 mySQL 查询仅获取第一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42328386/