Mysql从两个表中选择

时间:2012-02-27 05:30:07

标签: mysql sql

有人可以告诉我如何从两个表中选择数据,而不必使用连接吗?

这样的事情:

SELECT t1.*, 
       t2.*
  FROM table1 t1, 
       table2 t2

澄清

我有这两个表,它们具有相同的字段。 IE:table1包含2011年的数据,而table2包含2012年的数据。我希望得到所有数据。

进一步澄清:

所需的结果集可以通过以下方式生成:

(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions tr
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '') 
UNION 
(SELECT tr.full_name,tr.headlines,tr.content,tr.stamp,tr.person_key 
 FROM tbl_transactions_bk_2012 tr 
 JOIN persons p ON p.person_key = tr.person_key 
 JOIN teams t ON (pp.membership_id = t.id and pp.membership_type = 'teams') 
 WHERE t.team_key = '')

并且OP希望看看是否有其他方法可以加快速度(“我尝试在这些查询之间使用UNION。但查询速度需要0.1887秒。它有点慢。”)

(@ Jetoox:如果这不是您的意图,请编辑您的问题并澄清)。

5 个答案:

答案 0 :(得分:24)

只需将连接条件放在WHERE子句中:

SELECT t1.*, t2.*
FROM table1 t1, table2 t2
WHERE t1.id = t2.t1_id

但这是一个内部联接。

更新

查看您的查询时:在这种特殊情况下,tbl_transactionstbl_transactions_bk_2012之间没有关系(即在person_key上加入这些关系是没有意义的,因为这两个表之间没有任何关系(比方说)tbl_transactions和人有关。)

然后,您应该使用UNION方法。尝试使用JOINFROM xx, yy WHERE xx.id=yy.id将第一个查询加入第二个查询是毫无意义的,并且不会为您提供所需的结果。

顺便说一句,在将来,将您当前的查询/尝试放在您的帖子中 - 正如您所看到的那样,它会阻止您获得不适合您的问题的答案(正如我的第一次尝试)。

答案 1 :(得分:11)

你想要UNION

答案 2 :(得分:2)

select t1.*, t2.* from table1 t1, table2 t2
where t1.fkey = t2.pkey

答案 3 :(得分:2)

select t1.* , t2.*
from t1, t2 where t1.id=t2.id;

答案 4 :(得分:0)

使用UNION查询时,您可能还希望将索引添加到用于加入和过滤的任何列,这将提高性能