我有一个4行的测试表(id,fsn,owner,IR,NI)

id: 1, fsn: 123, owner: jones, IR: 1000, NI: 2350
id: 2, fsn: 345, owner: smith, IR: 0, NI: 50
id: 3, fsn: 567, owner: casey, IR: 200, NI: 0,
id: 4, fsn: 789, owner: brown, IR: 400, NI: 0

我需要在IR/NI字段上拆分这些字段,以便为每个IR和NI字段创建一个不为0的记录,因为我需要使用连接等分别处理每种类型,所以此时的最终输出应该是
id: 2, fsn: 345, owner: smith, IR: 0, NI: 50
id: 3, fsn: 567, owner: casey, IR: 200, NI: 0,
id: 4, fsn: 789, owner: brown, IR: 400, NI: 0,
id: 1, fsn: 123, owner: jones, IR: 1000, NI: 2350,
id: 1, fsn: 123, owner: jones, IR: 1000, NI: 2350

我以为下面的部分可以完成,但它没有像我需要的那样重复行。
SELECT *
FROM farms
WHERE IR != 0

UNION

SELECT *
FROM farms
WHERE NI != 0

最佳答案

我不太清楚为什么要将此行加倍,但有一个简单的方法可以解决这个问题:使用union allset运算符,它的作用类似于union运算符,但不删除重复项:

SELECT *
FROM farms
WHERE IR != 0

UNION ALL  -- Here!

SELECT *
FROM farms
WHERE NI != 0

关于mysql - SQL-用联合重复一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32177584/

10-10 20:05