我有以下查询。
SELECT DISTINCT tbl_event_entries.race_nbr,
tbl_event_entries.class_id,
tbl_event_entries.racer_id,
tbl_event_entries.heat_position,
tbl_event_classes.combine
FROM tbl_event_entries
LEFT JOIN tbl_event_classes
ON tbl_event_entries.class_id = tbl_event_classes.class_id
WHERE tbl_event_entries.event_id = :event_id
ORDER BY tbl_event_entries.race_nbr, tbl_event_entries.heat_position
此查询中的数据是:
event_class_id event_id class_id combine
822 20160706MAS577d098260173 1 2
823 20160706MAS577d098260173 2 8888
entry_id event_id racer_id class_id
8318 20160706MAS577d098260173 238 1
8319 20160706MAS577d098260173 1184 2
我从此查询中获得的输出:
race_nbr class_id racer_id heat_position combine
1 1 238 1 2
1 1 238 1 NULL
2 2 1184 1 8888
2 2 1184 1 NULL
我可以将查询限制为不显示" NULL"结合起来,但我并不总是在那个领域有数据。但是,我永远不应该看到像这样重复的行。
我应该看到两行:
race_nbr class_id racer_id heat_position combine
1 1 238 1 2
2 2 1184 1 8888
有人能看到错误吗?
我尝试过LEFT JOIN,JOIN以及字段的一些不同更改。没看到为什么这会返回无效数据..
答案 0 :(得分:1)
答案:使用汇总......
SELECT e.race_nbr
, e.class_id
, e.racer_id
, e.heat_position
, MAX(c.combine) combine
FROM tbl_event_entries e
LEFT
JOIN tbl_event_classes c
ON c.class_id = e.class_id
WHERE e.event_id = :event_id
GROUP
BY e.race_nbr
, e.class_id
, e.racer_id
, e.heat_position
ORDER
BY e.race_nbr
, e.heat_position