mysql - 多列和排序

标签 mysql max

我已经尝试了几个小时来让我的 SQL 查询按价格排序。我们开始吧:

INFO

id (unique id)
mid (some id)
name 

价格

id (some unique id)
fuid (id for showing wich entry from INFO this price is connected to)
dated (date)

SQL 查询:

select INFO.id, INFO.mid, INFO.name, PRICES.price, PRICES.dated
from INFO, PRICES
WHERE INFO.id = PRICES.fuid
ORDER BY PRICES.dated asc
limit 100

我想要的结果是 INFO 中所有条目的列表,以及来自 PRICES 的最新价格。只有最新价格,每个 INFO 条目一个价格。

我得到的结果:我从 INFO 中得到了一个唯一条目的列表,但我得到了在 PRICES 中输入的第一个价格,而不是最新的。

我无法获取 max() 来帮助我对价格列进行排序。谁知道如何解决这个问题?

最佳答案

您是否将 GROUP BYMAX() 一起使用? MAX()GROUP BY 的以下用法可能会满足您的需要:

select INFO.id, INFO.mid, INFO.name, PRICES.price, MAX(PRICES.dated) 
from INFO, PRICES 
where INFO.id = PRICES.fuid
group by INFO.id, INFO.mid, INFO.name, PRICES.price
order by INFO.name asc 
limit 100

请注意,ORDER BY 列可以是您想要的任何内容;它不一定是 MAX(PRICES.dated)

编辑:我明白你的意思了。您可以使用这样的临时表 SQL Fiddle .

关于mysql - 多列和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14187566/

相关文章:

php - 如何在codeigniter中从每个id中选择以逗号分隔的其他表中的多个数据

php - 与日期相关的 SQL 查询

mysql - SQL选择一组的最大值

MYSQL选择当前连续获胜

java - Hibernate 不会在插入时将外键设置为父级主键的值

PHP - MySQL 1.000.000 条记录查询优化

php - 测量最大 PHP 内存使用量

arrays - 在数组中找到两个总和最大的非后续元素 - 面试问题

list - 每个级别(表面级别)LISP 的最大数量

mysql - 如何根据第四个表从三个表中的一个表中选择行,该表保存所有三个表中这些条目的顺序