MYSQL:从两列中选择最高的ID并排序
Posted
技术标签:
【中文标题】MYSQL:从两列中选择最高的ID并排序【英文标题】:MYSQL: Select the highest ID from two colums and sort 【发布时间】:2015-01-07 03:22:54 【问题描述】:SELECT
u.uid,
u.name,
u.description,
u.url,
u.picurl,
u.mapurl,
MAX(p.pid) AS MaxPriceID,
p.price,
p.uid,
MAX(r.rid) AS MaxRatingID,
r.rating,
r.uid
FROM
utested u
JOIN price p
ON u.uid=p.uid
JOIN rating r
ON u.uid=r.rid
GROUP BY u.uid, u.name
此查询显示我需要的内容,但未显示正确的值。
我想显示最高 PID 和 RID 我得到最高的 PID 和 RID,但不是最高的价格和评级。
有 3 张桌子。
谁能帮帮我?
【问题讨论】:
您是否需要与最高 pid、rid 相对应的所有其他详细信息,或者您需要来自 utested 的所有详细信息,以及作为单独列的最大值? 可能在您的表格中最高 PID 不对应最高评级和价格? 您需要在一个查询中获得最高的 pid 和 rid ,然后通过 join 或 subquery 获得对应的价格和评级。 您要获取 2 条记录吗?一个价格最高,一个评价最高?您在哪里指的是“最高价格”或“最高评级”(而不是 pid/rid)? 雷达:我需要最新 PID 的最高价格以及来自 utested 的所有详细信息。我需要它自己的专栏中的最新价格。我真的不需要 pid 列。我想要平均评级的 RID。不是最高的摆脱。 【参考方案1】:正如 cmets 中所暗示的,您应该使用子查询来获得最高评分,然后在这种情况下在您的连接语句中使用它。
尝试将其更改为:
SELECT u.uid, u.name, u.description, u.url
u.picurl, u.mapurl, p.price, p.uid, r.rating, r.uid
FROM utested u
JOIN price p ON u.uid = p.uid AND p.uid = (SELECT MAX(pid) FROM price)
JOIN rating r ON u.uid = r.rid AND r.rid = (SELECT MAX(rid) FROM rating);
如果没有任何样本数据,我无法进行测试,但我希望这可以满足您的需求,或者可以根据您的需求进行调整。
【讨论】:
它没有用。但请看我的另一个答案,它解释得更多。【参考方案2】:@McAdam331:谢谢你指点我,但它没有用,但它帮助我重写了查询。
我用我的数据集创建了一个 sqlfiddle。我发现了另一个“问题”。我需要评级是平均的。使用 AVG(rating) 获得类似于 4.3(小数点后 1 个)的分数
http://sqlfiddle.com/#!2/93b771/1
【讨论】:
以上是关于MYSQL:从两列中选择最高的ID并排序的主要内容,如果未能解决你的问题,请参考以下文章