【发布时间】:2014-09-03 13:42:13
【问题描述】:
我有两张桌子,像这样:
a.id、a.created、a.b
b.id, b.name, b.created
我希望表 b 中的所有记录都按 a.created 时间戳排序。
我一直在尝试以下方法:
SELECT b.id, b.name FROM b JOIN a ON a.b = b.id ORDER BY b.created DESC
但它总是从 b 返回多条记录,而我真正想要的只是 b 的每一行匹配一个 a。 p>
我尝试使用 SELECT 子查询:
SELECT b.id, b.name, (SELECT a.created AS a_c FROM a WHERE
a.b = b.id) AS a_c FROM b ORDER BY a_c DESC
但我也希望能够提取 a.id。
有没有我可以使用的 JOIN 语句或者我应该使用两个子查询?这将是我的应用程序中非常重要的功能,所以我希望性能高于标准!
【问题讨论】:
-
你试过了吗? SELECT DISTINCT b.id, b.name FROM b JOIN a ON a.b = b.id ORDER BY b.created DESC
-
如果你也想拉
a.id,并且a有多个匹配的行,你想拉哪一个? -
@Barmar 我想匹配
a的最新记录。例如ORDER BY a.created DESC LIMIT 1 -
您需要进行子选择并加入其中。
标签: mysql