有人可以告诉我如何从两个表中选择数据,而不必使用联接吗?
像这样的东西:
SELECT t1.*, t2.* FROM table1 t1, table2 t2
table1
table2
(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秒。这有点慢。”)
UNION
(@Jetoox:如果这不是您的意图,请编辑您的问题并进行澄清)。
只需将连接条件放在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相关的关系)。
tbl_transactions
tbl_transactions_bk_2012
然后,您应该使用该UNION方法。尝试使用JOIN或将第一个查询连接到第二个查询FROM xx, yy WHERE xx.id=yy.id是没有意义的,并且不会为您提供所需的结果。
JOIN
FROM xx, yy WHERE xx.id=yy.id
顺便说一句,将来将您当前的查询/尝试放在您的帖子中-如您所见,它将阻止您获得不适合您问题的答案(就像我第一次尝试那样)。