在多个条件下连接MySQL上的两个表

时间:2013-11-22 19:25:23

标签: mysql sql join

我对MySQL很陌生,我正在努力解决这个问题。我有两个不同的表(T1和T2),T2有来自T1的所有元素,还有一些额外的表。

我正试图从T2获取T1的所有值的变量“company”,例如:

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:是的,不好的一点是两张表来自不同的来源,没有唯一的关键值来加入它们,所以这就是为什么我要在所有这些条件下挣扎......

2 个答案:

答案 0 :(得分:0)

你试过这个吗?

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

答案 1 :(得分:0)

您可以在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'