【发布时间】:2013-02-07 15:07:23
【问题描述】:
以下面为例:
SELECT
*
FROM
auctions AS a
LEFT JOIN winners AS w ON a.auction_id=w.auction_id
WHERE
a.active=1
AND
a.approved=1
GROUP BY
a.auction_id
ORDER BY
a.start_time DESC
LIMIT
0, 10;
有时这可能会匹配winners 表中的多个结果;我不需要它们,但是如果有多个匹配项,我想控制我得到的行。我怎样才能在获胜者表上写一个ORDER BY 以确保我想要的行是第一行?
【问题讨论】:
-
请不要这样做。当您在单个列上选择
*和GROUP BY时,您的订单将永远不会得到保证。 -
你能发布你的表结构吗?
-
GROUP BY a.auction_id在您的查询中应该做什么?您没有进行聚合,而且您还选择了比GROUP BY子句更多的列。 (我一直不明白为什么 mySQL 允许这样做) -
您能否发布一些示例数据来解释如何订购?另外,您是在寻找订单,还是想获得唯一具有最新 start_time 的行?
-
@njk 我知道有人会对此发表评论哈哈....这只是为了举例,因为我的列太多了,我真的不需要在这里显示它们. :)
标签: mysql sql join sql-order-by left-join