一尘不染

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:如果这不是您的意图,请编辑您的问题并进行澄清)。


阅读 162

收藏
2021-03-17

共1个答案

一尘不染

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

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

但是,这是一个内部连接。

更新

在查看您的查询时:在这种特殊情况下,tbl_transactions和之间没有任何关系tbl_transactions_bk_2012(即,在person_key上将它们连接起来是没有意义的,因为两个表之间没有(例如)tbl_transactions和person相关的关系)。

然后,您应该使用该UNION方法。尝试使用JOIN或将第一个查询连接到第二个查询FROM xx, yy WHERE xx.id=yy.id是没有意义的,并且不会为您提供所需的结果。

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

2021-03-17