我正在尝试使用下面的查询检索一些数据。我需要在下面的查询'request_meta‘中再添加一个表,并且必须使用它的列'meta-value’进行排序,该列包含文本和unix时间戳等数据。
我需要在“meta-value”列中按时间戳的时间顺序获得这些结果。有人能帮我吗?
SELECT rt.taxonomy_id,rt.iteration,ra.*,
FROM request_taxonomy rt
inner join request_aspects ra ON ra.aspect_id = rt.request_aspects_id
WHERE rt.requests_id = 17;
request_meta table structure as follows:
----------------------------------------
meta_id - Pri
requests_id - bigint
request_taxonomy_id - bigint
meta-value - varcharrequest_meta表中的示例数据。第三行是存储的日期。其他表中的数据需要按日期升序排序。
requests_id meta_value request_taxonomy_id
17 8 925
17 Customer Cluster 926
17 1446792318 966
17 1446103569 967发布于 2015-11-06 16:39:17
如果我没有弄错,您必须筛选出meta_value实际上是时间戳而不是其他值的行。
所以你应该检查它是不是数字。这里解释了如何做到这一点:Detect if value is number in MySQL
然后,您可以通过设置最小字符串长度以忽略meta_value列中的值(如8)来过滤误报。
因此,只需参考一下可能如下所示的meta_value:
SELECT *
FROM mytable
WHERE concat('',meta_value* 1) = meta_value AND LENGTH(meta_value)>=10
ORDER BY meta_value;如果要管理较旧的时间戳,则可能需要更改字符串长度条件。
但我怀疑这是一种解决问题的有效方法。为了正确地解决这个问题,您应该考虑以一种将时间戳存储为数字值的方式来更改您的数据库结构。
https://stackoverflow.com/questions/33561777
复制相似问题