假设我有两张桌子:
由于我真的很大,我想先按日期过滤门票表
SELECT id FROM ticket WHERE date >= 'some date'
然后我想与用户表进行左连接。有没有办法做到这一点。我尝试了以下但它不起作用。
select ticket.id, user.name from ticket where ticket.date >= '2015-05-18' left join user on ticket.userid=user.id;
道歉,如果这是一个愚蠢的问题。我在谷歌上搜索过,但大多数答案都涉及加入后的子查询,而不是我想要的是先查询,然后为返回的项目进行连接
为了使事情更清楚一点,我面临的问题是我有大表并且加入需要时间。我正在加入3个表,查询花了将近3秒钟。什么是减少时间的最佳方法。我认为我应该首先选择一个小子集,然后加入。
,而不是加入然后再做where子句答案 0 :(得分:1)
简单地按顺序排列所有内容:
select - from - where - group by - having - order by
select ticket.id, user.name
from ticket left join user on ticket.user_id=user.id
where ticket.date >= '2015-05-18'
或者将其放在派生表中:
select ticket.id, user.name
from
(
select * from ticket
where ticket.date >= '2015-05-18'
) as ticket
left join user on ticket.user_id=user.id