0

我的数据库“票价”中有一张表。它有列 vehicle_number、date_from、date_to 和 fare。在 date_from 到 date_to 中定义的日期范围内有多个车辆编号及其在该特定日期范围内的票价。

vehicle_number  date_from    date_to       fare 
ABC123         2013-04-19   2013-04-24     $50
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20

我想运行一个查询假设其中的 vehicle_number-->ABC123 以便DATE 2013-04-20 fare as -->NULL 该表可以显示为

vehicle_number  date_from       date_to       fare 
ABC123         2013-04-19   2013-04-19     $50
ABC123         2013-04-21   2013-04-24     $50
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20

我在那个日期尝试了 INSERT 查询并插入 NULL,它被插入 NULL 但没有得到所需的输出。此外,DELETE 正在从数据库中删除整行。

原始插入日期和票价的查询:

INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('$vehicle_number','$from','$to','$vehicle_fares')

尝试此查询使 NULL

INSERT INTO fare (`vehicle_number`,`date_from`, `date_to`,`fares`) VALUES ('ABC123','2013-04-20','2013-04-20',NULL)

在此之后,它显示以下输出:

vehicle_number  date_from    date_to       fare 
ABC123         2013-04-19   2013-04-24     $50
ABC123         2013-04-20   2013-04-20     
ABC123         2013-04-25   2013-04-29     $100
ABC123         2013-04-25   2013-04-29     $120

ABC124         2013-04-19   2013-04-21     $20
4

1 回答 1

0

听起来您只是想显示不是 4-20 的日期。这不是插入新记录的合适上下文。相反,您应该修改查询以在返回的结果中简单地排除此日期:

SELECT * FROM fare WHERE vehicle_number = ABC123 AND date_from <> 2013-04-20 AND date_to <> 2013-04-20
于 2013-04-19T16:34:41.403 回答