在单个查询中选择两个特定的 mysql 表行
Posted
技术标签:
【中文标题】在单个查询中选择两个特定的 mysql 表行【英文标题】:Selecting two specific mysql table rows in a single query 【发布时间】:2010-05-11 21:57:07 【问题描述】:假设我有一个包含 20 个条目的表。它们按日期降序排列(日期是列名>_>)。我将如何只选择最新的条目和第 15 个最旧的条目?
我通过执行以下查询得到所有 15 个结果
SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 15;
【问题讨论】:
我相信你只能在两个查询中做到这一点,除非你做了一些联合选择魔法。限制 1 和限制 1,15 【参考方案1】:用途:
SELECT x.*
FROM (SELECT a.*,
@rownum := @rownum + 1 AS rank
FROM mytable a
JOIN (SELECT @rownum := 0) r
WHERE a.col1 = "zzz"
ORDER BY a.date DESC) x
WHERE x.rank IN (1, 15)
【讨论】:
嗯,我收到“未知表 'a'”【参考方案2】:您可能需要使用两个 SELECT 的 UNION
(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date LIMIT 1, 15)
UNION
(SELECT * FROM mytable m WHERE col1 = "zzz" ORDER BY date DESC LIMIT 1)
更新:
加括号
【讨论】:
你是对的,但是我刚刚添加的括号是有效的 - 只是尝试过以上是关于在单个查询中选择两个特定的 mysql 表行的主要内容,如果未能解决你的问题,请参考以下文章