我不确定我是否误解了一个基本的东西,或者我的数据库如何解释查询有问题...运行宇宙
当我跑步时
SELECT POIDSBRUT, PRIXBRUTU, FAMILLENU, TPSMOU, TPSMOUPLANIF, QTE1PLANIFMOU, OF5
FROM GPSOF
WHERE DFINPLANIFMOU >= '%1' AND DFINPLANIFMOU <= '%2' AND EQPLANIFMOU <> 'A placer' AND EQPLANIFMOU LIKE 'A%'
它给了我5个结果(这里一切正常)。
但是当我跑步时
SELECT POIDSBRUT, PRIXBRUTU, FAMILLENU, TPSMOU, TPSMOUPLANIF, QTE1PLANIFMOU, OF5
FROM GPSOF
WHERE DFINPLANIFMOU >= '%1' AND DFINPLANIFMOU <= '%2' AND EQPLANIFMOU <> 'A placer' AND EQPLANIFMOU LIKE 'A%'
UNION
SELECT POIDSBRUT, PRIXBRUTU, FAMILLENU, TPSMOU, TPSMOU2PLANIF, QTE2PLANIFMOU, OF5
FROM GPSOF
WHERE DFIN2PLANIFMOU >= '%1' AND DFIN2PLANIFMOU <= '%2' AND EQ2PLANIFMOU <> 'A placer' AND EQ2PLANIFMOU LIKE 'A%'
UNION
SELECT POIDSBRUT, PRIXBRUTU, FAMILLENU, TPSMOU, TPSMOU3PLANIF, QTE3PLANIFMOU, OF5
FROM GPSOF
WHERE DFIN3PLANIFMOU >= '%1' AND DFIN3PLANIFMOU <= '%2' AND EQ3PLANIFMOU <> 'A placer' AND EQ3PLANIFMOU LIKE 'A%'
我只得到2个结果。要么我不明白UNION是如何工作的,要么我的数据库有另一个问题...... 感谢
答案 0 :(得分:2)
UNION语句有效地对结果集执行SELECT DISTINCT。如果您知道返回的所有记录都是您的联合中唯一的,请改用UNION ALL,它会提供更快的结果。
答案 1 :(得分:1)
UNION删除重复项 - 我猜你的第一个结果集中的4条记录是相同的吗?
答案 2 :(得分:-1)
为什么使用union
进行此查询?为什么不选择你想要的行?
SELECT POIDSBRUT, PRIXBRUTU, FAMILLENU, TPSMOU, TPSMOUPLANIF,
(CASE WHEN EQPLANIFMOU LIKE 'A%' THEN QTE1PLANIFMOU
WHEN EQPLAN2IFMOU LIKE 'A%' THEN QTE2PLANIFMOU
WHEN EQPLAN3IFMOU LIKE 'A%' THEN QTE3PLANIFMOU
END) as QTE1PLANIFMOU,
OF5
FROM GPSOF
WHERE DFINPLANIFMOU >= '%1' AND DFINPLANIFMOU <= '%2' AND EQPLANIFMOU <> 'A placer' AND
(EQPLANIFMOU LIKE 'A%' OR
EQPLAN2IFMOU LIKE 'A%' OR
EQPLAN3IFMOU LIKE 'A%'
)