MySQL使用IN子句按时间戳排序

时间:2015-02-02 15:57:06

标签: mysql mysqli sql-order-by sql-in

我有以下查询,它可以根据设置的时间戳返回结果。

SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02') LIMIT 10

我想要做的是从DESC顺序获取上述结果但是ORDER BY时间戳。像这样的东西,但它不起作用。返回相同的值,但不是基于时间戳的DESC顺序。

SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02' ORDER BY timestamp DESC) LIMIT 10

思考? timestamp列只能在query_data表中找到。不确定这是否导致问题?

2 个答案:

答案 0 :(得分:0)

我建议您观看此链接(subselect order timestamp)您遇到的问题就像您想的那样,即使订购了子选项,然后它在主查询中不合适,加入也会对这种情况。

希望它对你有所帮助。

答案 1 :(得分:0)

我相信这会奏效:

SELECT * FROM catalog c INNER JOIN query_data q ON c.part = q.part WHERE q.timestamp >= '2015-02-02' ORDER BY timestamp DESC;

您的方法的主要问题是您正在订购子查询。使用连接和“order by”外部应该修复它。