我正在使用三个表,可以总结如下:
表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单个查询中的子查询?感谢您的任何建议。
答案 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;