【发布时间】:2011-04-18 02:58:17
【问题描述】:
我正在尝试根据比较的行获取值不匹配的字段。很难解释,所以我将示例表及其结果。
表格:订单
| seqid | orderId | taskId | field1 | field2 | field3 | field4 |
+---------+-----------+----------+----------+----------+----------+----------+
| 1 | 1 | 1 | a | b | c | d |
| 2 | 1 | 2 | a | b | c | d |
| 3 | 2 | 1 | a | b | c | d |
| 4 | 2 | 2 | a | c | c | c |
| 5 | 3 | 1 | a | a | a | a |
结果:
| OrderId | FieldName | Error |
+-----------+-------------+---------+
| 2 | field2 | 1 |
| 2 | field4 | 1 |
在这里您可以看到orderId 将使用其taskId 进行比较。从 field1 到 field4 是要检查其值是否不匹配的字段。如果是,则获取字段名称。 Error 列不是优先级,可以无视。如果 orderId 只有一个任务,则不会进行比较。
我的第一个计划是使用两个将taskId 分开的查询,然后Java 将完成剩下的工作。但如果可能的话,只需要一个查询就可以了。即使我不了解存储过程,但如果它是唯一的方法,那么让我展示一下,我会检查一下。
我还没有任何有效的查询,甚至没有得到接近我想要的结果。任何答案将不胜感激。谢谢!
更新:
我猜结果很难回答。我将发布另一个我认为很容易解决的结果。
结果2
| orderId | field1 | field2 | field3 | field4 |
+-----------+----------+---------+---------+----------+
| 1 | 0 | 0 | 0 | 0 |
| 2 | 0 | 1 | 0 | 1 |
对于第二个结果,我需要知道该字段是否具有不匹配的值,如果是,它将显示 1。此结果的过程是将Task = 1 和Task = 2 的两行与相同的orderId 进行比较.我将过滤Java中具有不匹配值的字段。
我希望这里有人甚至可以回答第二个结果。如果你能回答第一个结果,那将是一个很大的帮助。
【问题讨论】: