gpt4 book ai didi

python - 知道一个 SQL 请求的结果是否必须是另一个 SQL 请求结果的一部分

转载 作者:行者123 更新时间:2023-11-30 22:38:41 25 4
gpt4 key购买 nike

假设我有下表:

Id (int, Primary Key) | Value (varchar)
----------------------+----------------
1 | toto
2 | foo
3 | bar

我想知道如果给出两个请求,第一个的结果必须包含在第二个的结果中而不执行它们

一些例子:

# Obvious example
query_1 = "SELECT * FROM example;"
query_2 = "SELECT * FROM example WHERE id = 1;"
is_sub_part_of(query_2, query_1) # True

# An example we can't know before executing the two requests
query_1 = "SELECT * FROM example WHERE id < 2;"
query_2 = "SELECT * FROM example WHERE value = 'toto' or value = 'foo';"
is_sub_part_of(query_2, query_1) # False

# An example we can know before executing the two requests
query_1 = "SELECT * FROM example WHERE id < 2 OR value = 'bar';"
query_2 = "SELECT * FROM example WHERE id < 2 AND value = 'bar';"
is_sub_part_of(query_2, query_1) # True

# An example about columns
query_1 = "SELECT * FROM example;"
query_2 = "SELECT id FROM example;"
is_sub_part_of(query_2, query_1) # True

您知道 Python 中是否有一个模块能够做到这一点,或者是否有可能做到这一点?

最佳答案

有趣的问题。我不知道有任何图书馆会为您做这件事。我的想法:

  • 解析 SQL,参见 this例如。
  • 定义哪些过滤操作可以添加到只能产生相同或更窄结果集的查询中。我认为,总是可以添加“AND x”,而不会失去作为子集的属性。 “OR x”不能。您还可以对查询执行其他操作吗?例如“SELECT *”、“SELECT x”和“SELECT x, y”。

除此之外,我只能说这是一个有趣的想法。您可能会在 DBA 上获得更多信息.这是您正在研究的想法还是与您正在解决的现实问题有关,例如优化数据库查询?也许您的问题可以用相关信息进行更新,因为这不是优化查询的常用方法(我猜除非您正在处理数据库引擎本身)。

关于python - 知道一个 SQL 请求的结果是否必须是另一个 SQL 请求结果的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com