【问题标题】:Updating one table (MySQL) based on certain conditions related to another table根据与另一张表相关的某些条件更新一张表(MySQL)
【发布时间】:2017-11-23 09:38:58
【问题描述】:

问题是: “德里到孟买航班的航空公司票价提高 10%”

我知道一种方法是自己检查相应的航班号并在查询中使用它,但我希望查询仅针对表中给出的列。我尝试了以下两种方法都失败了: 1)update fares set fare=1.1*fare where flight.start='Delhi' and flight.end='Mumbai';

2)update fares set fare=1.1*fare where (flights natural join fares).start='Delhi' and (flights natural join fares).end='Mumbai';

请帮忙

flights 表有列 flight no,start,end,noofflights,noofstops

票价表有航班号、票价、航空公司、税率

【问题讨论】:

  • 什么没用?
  • 它给了我一个错误(我自己看不到语法错误)
  • 它表示未知列flights.start

标签: mysql database datatables


【解决方案1】:

下面的 SQL 可能会帮助你参考

UPDATE FLIGHT FL INNER JOIN FARES FR 
ON FL.flightno = FR.flightno SET FR.fare = (1.1 * FR.FR) 
WHERE FL.start = 'Delhi' AND FL.end = 'Mumbai' ;

【讨论】:

    【解决方案2】:

    不确定是不是你想要的:

    Update fares fs
    LEFT JOIN flight f on f.flightno = fs.flightno
    SET fare = 1.1 * fare
    WHERE f.start='Delhi' and f.end='Mumbai';
    

    【讨论】:

    • 为什么要使用左连接?
    • 我的错,不需要left join,你可以使用inner join。