内连接中的where子句

时间:2016-11-24 14:36:37

标签: mysql

我正在生成一个查询。我有两个表名:航班和目的地。 在航班表中,我有列:id,出发地,目的地,价格,航空公司,类和目的地表,我有列:it.only("diag", function(done) { let data = null; app.client.timeoutsAsyncScript(5000).executeAsync(function(data, done) { console.log("START"); done(); }); });

现在我想获得区域为id, destination, country, region.的航班详情。我在做"Europe"。我的疑问是:

inner join

它给我的结果是空的。如果我从查询中删除(SELECT * FROM `flights` INNER JOIN destinations ON flights.destination = destinations.destination where region= 'europe' ),那么它会向我提供所有航班和目的地列的结果。

请帮帮我

3 个答案:

答案 0 :(得分:0)

试试这个

SELECT * 
FROM  `flights` 
INNER JOIN destinations 
  ON flights.destination = destinations.destination
where LOWER(region) = 'europe'

答案 1 :(得分:0)

我注意到您说'Europe'是该地区。 MySQL可以区分大小写,具体取决于用于数据库和表的排序规则(但默认情况下不是)。所以,我将从比较正确的案例开始:

SELECT * 
FROM flights f INNER JOIN 
     destinations d
     ON f.destination = d.destination
WHERE d.region = 'Europe';

如果这不起作用,那么奇怪的字符可能已经悄悄进入region列。你可以尝试:

WHERE lower(d.region) like '%europe%'

答案 2 :(得分:0)

由于您正在使用内部联接,因此可以将区域指定为联接条件的一部分,如下所示:

    SELECT * 
    FROM  `flights` 
    INNER JOIN destinations ON flights.destination = destinations.destination 
        AND destinations.region = 'europe'

Flights.Destination值是否存储Destination表的Id?您可能需要将连接调整为

flights.destination = destinations.Id