我正在尝试使用以下查询检索一些数据。我需要在下面的查询中添加一个表格,' request_meta',并且必须使用其列'元值'进行排序。其中包含文本和unix时间戳等数据。
我需要按照列'元值'中时间戳的时间顺序得到这些结果。 。任何人都可以帮助我吗?
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 - varchar
request_meta表中的示例数据。第三行是存储的日期。其他表中的数据需要根据日期的升序排序。
requests_id meta_value request_taxonomy_id
17 8 925
17 Customer Cluster 926
17 1446792318 966
17 1446103569 967
答案 0 :(得分:0)
如果我做对了,你必须过滤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;
如果您要管理较旧的时间戳,则可能需要更改字符串长度条件。
但我怀疑这是解决问题的一种高效方法。要正确解决该问题,您应该考虑以将时间戳存储为数值的方式更改数据库结构。