python - 从具有最小值总和的不同表中选择唯一记录

标签 python mysql sql database sqlite

我有一个包含 3 个表的 SQLite 数据库。这些表中的每一个都有两列:名称和值,因此所有表都具有相同的记录(名称)但值不同。如何选择属于跨这些表的最小值总和的记录,以便记录名称是唯一的?

姓名:史蒂文、杰米、迈克尔、乔丹、加里

值(value)观

(按名字顺序)

表 1:1、2、3、4、5

表 2:2、3、1、5、6

表 3:9、0、2、11、3

输出应该返回 (Steven, Michael, Jamie),因为在这种情况下,值的总和将等于 2,这是最不可能的。

最佳答案

首先,SQL 表表示无序 集。因此,两个表之间没有基于位置的对应关系。相反,让我假设每个都有一个 name 列。

其次,SQL 并没有真正进行优化,因此您需要以蛮力的方式进行优化。即生成所有组合,然后选择最小值。

本质上使用了一个cross join:

select min(t1.value + t2.value + t3.value)
from table1 t1 cross join table2 t2 cross join table3 t3
where t1.name <> t2.name and t3.name not in (t1.name, t2.name);

或者,如果您想要名称:

select (t1.value + t2.value + t3.value), t1.name, t2.name, t3.name
from table1 t1 cross join table2 t2 cross join table3 t3
where t1.name <> t2.name and t3.name not in (t1.name, t2.name)
order by (t1.value + t2.value + t3.value)
limit 1

关于python - 从具有最小值总和的不同表中选择唯一记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31428576/

相关文章:

php - 带有数据库 (mysql) 查询的 WordPress 插件

python - 在 TensorFlow 中,如何断言列表的值在某个集合中?

python - SlidingWindows 在 python apache beam 中可以有半秒周期吗?

php - 从我的数据库中选择多个 STEAMID

MySQL查询查找未映射的结果

php - 如何在html中显示textarea字段?

SQL 存储过程 if 语句带位

php - 在将值存储为 CSV 的列上使用多个标签进行最佳结果搜索

python - 如何定义一个元素属于其他类别?

python - 从 None json.decoder.JSONDecodeError : Expecting value: line 1 column 1 (char 0) 引发 JSONDecodeError ("Expecting value"、 s、err.value)