php - 使用 mySQL 查询仅获取第一行

标签 php mysql database join left-join

我有 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 BYLIMIT 结合使用。在本例中,我们希望按 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/

相关文章:

PHP 定义 var = 一个或另一个(又名 : $var=($a||$b);)

mysql - 将已排序分区中的行划分为特定数量的组。 [MySQL]

.net - 哪个更快 : Working from memory or lots of queries?

php - 商店的表格结构 - 商品 - 价格

php - 准备好的语句在具有 MYSQLI EXTENSION 的函数中不起作用

php - 显示赞助商服务器不同的颜色不显示 php

php - 通过 SQL 的多维 JSON 对象

javascript - 生成 1 个可切换表,而不是 1 页上的 3 个表

java - 结合版本 1 和版本 4 UUID 的想法是个好主意吗?

PHP5 : What PHP function outputs Users IP address, 平台和浏览器?