单个查询,根据提供的时间戳从3个单独的表中获取数据

时间:2011-05-10 18:20:42

标签: mysql

我正在使用三个表,可以总结如下:

表1( pid 已创建,数据,link1) 表2( pid 已创建,数据) 表3( link1 已创建,数据)

创建的字段是UNIX时间戳,每个表中的数据字段格式相同。

我想获取所有3个表中的数据,使Table1.pid = Table2.pid AND Table1.link1 = Table3.link1 AND created小于且最接近给定的时间戳值。

因此,举个例子,假设我提供2011年5月7日下午1:00的日期。我想要在这个日期时间之前最近创建的每个表中的数据记录。

现在我已经设法在涉及子查询的相当丑陋的单个查询中执行此操作(使用INNER JOINs UNIONs),但我想知道它是否可以完成w / o单个查询中的子查询?感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

显然我还没有真正运行查询,但如果我理解你的问题,它似乎会做你需要的任何事情。

t1.pid和t2.pid是相同的,t1.link1和t3.link1是相同的,并且没有.created高于你的时间,你想要最接近日期的行。

SELECT t1.data, t2.data, t3.data FROM Table1 t1, Table2 t2, Table3 t3 WHERE t1.pid = t2.pid AND t1.link1 = t3.link1 AND GREATEST(t1.created,t2.created,t3.created) < 'your-formatted-time' ORDER BY GREATEST(t1.created,t2.created,t3.created) DESC;