MySQL 使用 IN 子句按时间戳排序
MySQL Order By timestamp using IN clause
我有以下查询,它可以很好地根据设置的时间戳返回结果。
SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02') LIMIT 10
我想做的是从上面获取结果,但按 DESC 顺序按时间戳排序。像这样的东西,但它不起作用。返回相同的值,但不是基于时间戳的 DESC 顺序。
SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02' ORDER BY timestamp DESC) LIMIT 10
想法?时间戳列仅在 query_data table 中找到。不确定这是否会导致问题?
我鼓励您观看此 link (subselect order timestamp) 您遇到的问题如您所想,即使子选择已排序,但它在主查询中不合适, a Join 对这种情况很有用。
希望对你有帮助。
我相信这会奏效:
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" 应该可以解决这个问题。
我有以下查询,它可以很好地根据设置的时间戳返回结果。
SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02') LIMIT 10
我想做的是从上面获取结果,但按 DESC 顺序按时间戳排序。像这样的东西,但它不起作用。返回相同的值,但不是基于时间戳的 DESC 顺序。
SELECT * FROM catalog WHERE part IN (SELECT part FROM query_data WHERE timestamp >= '2015-02-02' ORDER BY timestamp DESC) LIMIT 10
想法?时间戳列仅在 query_data table 中找到。不确定这是否会导致问题?
我鼓励您观看此 link (subselect order timestamp) 您遇到的问题如您所想,即使子选择已排序,但它在主查询中不合适, a Join 对这种情况很有用。
希望对你有帮助。
我相信这会奏效:
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" 应该可以解决这个问题。