【发布时间】:2019-01-10 10:44:30
【问题描述】:
我想在 SQL 中合并某些 IF 条件的行。我的数据库是这样的
| com_id | bom_id |fil_title ====================== | 6067 | 6070 |空 | 6067 | 6070 |07 | 6067 | 6071 |空 | 6067 | 6071 |07 | 6067 | 6069 |空我想要达到的是
| com_id | bom_id |fil_title ====================== | 6067 | 6070 |07 | 6067 | 6071 |07 | 6067 | 6069 |空所以每次如果我有两行具有相同的 bom_id 我想将它们合并为一个,但如果我有一个就离开它。
这只是一个示例 - 我的完整查询更大,但问题就在那里。我知道 SQL 有一些 IF,但我真的不知道如何在这里使用它。
//编辑 我没有准确提到我有更多带有一些随机值的字段。我只想从不为空的行中选择这个值。 (但前提是我们有 2 行)。这就是为什么不同的和简单的聚合不起作用的原因
【问题讨论】:
-
“这就是为什么 [...] 简单地 agrregate 不起作用”:我不明白 Yogesh Sharma 的答案对你不起作用。如果有更多类似
fil_title的列,则将它们视为相同的select com_id, bom_id, max(fil_title), max(another_column), max(yet_another_column) ...。 -
我不能取最大值(另一列),因为它不一定是最大值。有时是最大值有时是最小值。无法澄清。这就是我想从特定行中选择值的原因。
-
哪一行?到目前为止,您只展示了一行有值而另一行没有值的情况。所以使用
MAX或MIN来获取那个值并不重要。如果不是从所有其他值都为 NULL 的值列表中选择一个值,那么您会突然问一个非常不同的问题。您可能希望在此处接受答案并使用新问题和更全面的示例数据(包括边缘案例)打开新请求。
标签: mysql sql if-statement merge