我有一个MySQL查询的问题。
假设我们有两个表:
汽车:
| 身份证|烙印|所有者标识|
| - ------|- ------|- ------|
| 1个|丰田|二十四|
| 第二章|浅滩|五十六|
| ...|...|...|
汽车债务:
| 身份证|价值|汽车标识(fk)|fl_unique(布尔值)|
| - ------|- ------|- ------|- ------|
| 二十四|50.0分|1个|无|
| 二十五|40岁|1个|无|
| 二十六|90分|1个|1个|
| 二十七|10.0分|第二章|无|
| 二十八|20.0年|第二章|无|
| 二十九|30岁|第二章|无|
| ...|...|...|...|
我想产生这样一个结果:
| 汽车_债务. id|汽车债务.价值|www.example.comcars.idcars.brand| car_debts.fl_unique(boolean) | cars.brand |
| - ------|- ------|- ------|- ------|- ------|
| 二十四|0.0分|1个|无|丰田|
| 二十五|0.0分|1个|无|丰田|
| 二十六|90分|1个|1个|丰田|
| 二十七|10.0分|第二章|无|浅滩|
| 二十八|20.0年|第二章|无|浅滩|
| 二十九|30岁|第二章|无|浅滩|
| ...|...|...|...|...|
因此,基本上查询结果时会考虑"fl_unique"标志。如果car_debts在某行中的"fl_unique"为真,则只应考虑具有该标志的值,其他值 必须为0.0。如果它们没有标记为true,则值不会发生任何变化。
这是我的问题的一个简单的抽象。感谢任何帮助或提示!
2条答案
按热度按时间ssm49v7z1#
以下步骤可在this example上找到。
首先,通过查找哪个不同的car_id具有fl_unique true(0)开始,这可以通过使用以下来实现:
我们可以使用连接和case表达式如下:
如果car_id的所有组值(在示例2中)均为空,则按原样选择value
cngwdvgl2#
使用
MAX()
窗口函数获取每个car_id
的fl_unique
最大值,并将其与fl_unique
的当前值进行比较。如果它们不相同,这意味着返回的
value
必须是0
,否则是value
:请参见demo。