0

我环顾四周,找不到答案。可能是我不知道要寻找的正确术语。

我有大约 15 个表,所有表都有相同的列和相似的数据。它们之间的唯一区别是创建日期。

我想像这样搜索其中一些:

SELECT * 
FROM table_2010, table_2011 
WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01'
ORDER BY date_created

但我不相信这会起作用,因为它将我的所有数据视为 2 个表,并创建模棱两可的字段:P

有什么建议么?这是工会工作还是什么?!

4

6 回答 6

1
select * 
from (SELECT * FROM table_2010
      WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01'
      union
      SELECT * FROM table_2011
      WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01'
) as t
ORDER BY date_created
于 2012-05-28T14:50:35.800 回答
1

创建表对象,试试这个

SELECT * 
FROM table_2010 AS t1, table_2011 AS t2
WHERE ( t1.date_created BETWEEN '2010-04-01' AND '2011-04-01' AND t2.date_created BETWEEN '2010-04-01' AND '2011-04-01')
ORDER BY t1.date_created,t2.date_created
于 2012-05-28T14:49:10.573 回答
0

这是一个联合,但您需要从联合中进行选择以获取跨表的顺序,但如果 date_created 始终在表的年份,您可能可以跳过该步骤

Select * From (
SELECT *  FROM table_2010
WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01'
Union all
Select * From Table_2010
WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01'
) allmyTables
ORDER BY date_created 
于 2012-05-28T14:52:08.267 回答
0

使用别名'

SELECT * 
FROM table_2010 as t2010, table_2011 as t2011 
WHERE t2010.date_created BETWEEN '2010-04-01' AND '2011-04-01'
ORDER BY t2010.date_created
于 2012-05-28T14:47:41.950 回答
0

尝试这个

SELECT table_2010.*, table_2011.* 
FROM table_2010, table_2011 
WHERE table_2010.date_created >= '2010-04-01' AND table_2011.date_created <= '2011-04-01'
ORDER BY table_2010.date_created, table_2011.date_created

我相信 2010 表中只有 2010 年的数据,而 2011 年表中只有 2011 年的数据。

于 2012-05-28T14:49:21.807 回答
0
SELECT *  FROM table_2010 
WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01' ORDER BY date_created 

union

SELECT *  FROM table_2011 
WHERE date_created BETWEEN '2010-04-01' AND '2011-04-01' ORDER BY date_created 
于 2012-05-28T14:49:32.803 回答