Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 按多个条件订购_Mysql - Fatal编程技术网

Mysql 按多个条件订购

Mysql 按多个条件订购,mysql,Mysql,我需要一个查询,将给我的结果是(a)最高的价格或(b)与最早的时间戳之一。在所有情况下,价格都应该超过时间戳(即如果一条记录的时间戳比其他所有记录的价格都高,那么它应该总是返回价格最高的记录) 以下是一些场景: id | price | date 1 | 5 | 2012-02-20 08:59:06 2 | 5 | 2012-02-20 09:59:06 3 | 7 | 2012-02-20 10:59:06 应该返回id 3,因为它是最高价格 id | price | date 1 | 5

我需要一个查询,将给我的结果是(a)最高的价格或(b)与最早的时间戳之一。在所有情况下,价格都应该超过时间戳(即如果一条记录的时间戳比其他所有记录的价格都高,那么它应该总是返回价格最高的记录)

以下是一些场景:

id | price | date
1 | 5 | 2012-02-20 08:59:06
2 | 5 | 2012-02-20 09:59:06
3 | 7 | 2012-02-20 10:59:06
应该返回id 3,因为它是最高价格

id | price | date
1 | 5 | 2012-02-20 08:59:06
2 | 5 | 2012-02-20 09:59:06
3 | 5 | 2012-02-20 10:59:06
应返回id 1,因为它是最旧的

在我当前的查询中,我正在执行以下操作:

SELECT * FROM table ORDER BY price, date DESC LIMIT 1
不幸的是,这个查询并不像我上面所描述的那样有效


谢谢你的帮助

我很难准确地确定你想要的是什么,不过听起来你是在寻找最古老的时间戳和最高的价格,所以下面的内容就足够了

SELECT *
FROM table
ORDER BY 
    price DESC,   // Favour the highest price
    date ASC      // Now get the one with oldest date at this price
LIMIT 1

我希望我能理解你的问题,试试这个

SELECT 
    p.*
FROM table p
WHERE price = (SELECT MAX(price) FROM table)
    OR date = (SELECT MIN(date) FROM table)

您显示了两个相同的数据集,并请求不同的结果。您打算有两种不同的查询吗?如果没有,哪一个是正确的结果?我看不到您的数据集有任何差异,因此很难理解您试图实现的目标…:)为什么第二个示例应该返回id 1?你提到价格应该总是超过时间戳。尽管我对问题的解释不清楚,但这是有效的。谢谢