0

此查询如下所示:

INSERT INTO `results` (`class_id`, `rider_id`, `schedule_id`, `finish`, `points`, `season_id` )
SELECT DISTINCT racedata.class_id, riders.id as rider_id, schedule.id as schedule_id,  racedata.cf_finish, racedata.main_points, schedule.season_id
FROM (racedata LEFT JOIN riders ON racedata.ridername = riders.ridername) 
INNER JOIN `schedule` ON `schedule`.date = STR_TO_DATE(`racedata`.event_date, '%m/%d/%Y') WHERE cf_finish > 0;

我需要更改查询,以便它使用当前年份作为对另一个表的查找,该表调用seasons以获取与当前年份关联的 id。它有字段idseason其中包含年份。

现在我存储season_idschedule表中,但不想再使用该字段。我试图简化应用程序的前端,这反过来又使后端复杂化。

我想用它EXTRACT(YEAR FROM date) = EXTRACT(YEAR FROM NOW())来获取当前年份,它在 where 语句中工作得很好,但我以前没有在这种情况下使用过它。

我是否应该尝试在我的选择中进行嵌套选择以获取我想要的数据?

4

1 回答 1

1
INSERT INTO `results`
    (`class_id`, `rider_id`, `schedule_id`,
    `finish`, `points`, `season_id` )
SELECT DISTINCT racedata.class_id, riders.id as rider_id,
    schedule.id as schedule_id,  racedata.cf_finish,
    racedata.main_points, season.season_id
FROM racedata
LEFT JOIN riders
ON racedata.ridername = riders.ridername
INNER JOIN `schedule`
ON `schedule`.date = STR_TO_DATE(`racedata`.event_date, '%m/%d/%Y')
INNER JOIN `seasons`
ON `seasons`.date = EXTRACT(YEAR FROM NOW())
AND `seasons`.date = EXTRACT(YEAR FROM `schedule`.date)
WHERE cf_finish > 0;
于 2014-11-27T10:11:59.653 回答