在多个条件下在MySQL上连接两个表
我对MySQL很新颖,而且我正在努力解决这个问题。我有两个不同的表格(T1和T2),而T2则获得了T1中的所有元素,还有一些额外的元素。在多个条件下在MySQL上连接两个表
我试图从T2获取变量 “公司” 从T1的所有值,如:
SELECT
T2.company as company,
T1.route as route,
T1.departure_time,
T1.arrival_time
当某些条件得到满足,如:
T1.route LIKE(CONCAT(T2.airport1,T2.airport2)) AND
T1.departure_time = T2.departure_time AND
T1.arrival_time = T2.arrival_time
如何我可以这样做吗?对于基本问题抱歉,但我现在真的很绝望。非常感谢。
OBS:是的,坏的是,这两个表从不同的来源来了,因此,有加入其中没有唯一的键值,所以这就是为什么我在与所有这些条件的挣扎......
你试过这个吗?
SELECT
T2.company as company,
T1.route as route,
T1.departure_time,
T1.arrival_time
from
t1,t2
where
T1.route LIKE(CONCAT(T2.airport1,T2.airport2)) AND
T1.departure_time = T2.departure_time AND
T1.arrival_time = T2.arrival_time
是的,我也试过,但它也花了很长时间,我收到服务器超时...两个表是巨大的,每个8,5万条目 – rodrigoburg
似乎这个结构有点缺陷。你应该重新组织表格。添加适当的主键/外键和索引。 –
您可以在ON子句中添加条件,像这样
SELECT Fields
FROM T1
LEFT JOIN T2
ON T1.company=T2.company
AND T1.route LIKE(CONCAT(T2.airport1,T1.airport2))
AND T1.departure_time = T2.departure_time
AND T1.arrival_time = T2.arrival_time
是,对于刚刚担任的是确保该行确实在连接目的的条件,条件,以确定哪些要选择的行将在WHERE子句之后。考虑下面的线路在其他线路之后立即走
WHERE T1.company='airFoo'
我实际上已经尝试过使用LEFT JOIN,就像你所建议的那样,但是我花了很长时间才得到超时响应,所以我得出结论说我一定是做错了什么事情了...... – rodrigoburg
你能发布实际使用的查询吗?也一定要正确地索引使用的字段。如果你有大表,这可能会减慢查询速度 –
桌子上的钥匙是什么? –