You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python+SQLite3技术问询:筛选多供应商可获取的part1

解决SQLite多供应商part1筛选问题

嘿,我来帮你搞定这个需求!根据你提供的parts表结构和数据,我们可以通过针对性的SQL查询来实现目标,下面分两种场景给出方案,再结合Python代码示例:

场景1:输出符合条件的part1及对应供应商

如果需要得到像a, Foo、a, Bar这样的完整记录,可以用嵌套查询:先找出那些有多个不同供应商的part1,再筛选这些part1的所有相关记录:

SELECT part1, supplier
FROM parts
WHERE part1 IN (
    SELECT part1
    FROM parts
    GROUP BY part1
    HAVING COUNT(DISTINCT supplier) > 1
)
ORDER BY part1, supplier;

关键说明:这里用COUNT(DISTINCT supplier)而不是直接COUNT(supplier),是因为同一个part1可能在同一个供应商下有多个part2的记录,我们要统计的是不同供应商的数量,而非总记录数,这样才不会误判。

场景2:仅输出符合条件的part1(如a、c)

如果只需要得到有多个供应商的part1列表,直接用分组统计即可:

SELECT DISTINCT part1
FROM parts
GROUP BY part1
HAVING COUNT(DISTINCT supplier) > 1
ORDER BY part1;

结合Python的实现代码

把上面的SQL语句嵌入Python的SQLite3操作中,示例代码如下:

import sqlite3

# 连接到你的SQLite数据库(替换为实际路径)
conn = sqlite3.connect('your_database.db')
cursor = conn.cursor()

# 场景1:获取完整的part1和供应商记录
print("=== 完整记录 ===")
cursor.execute("""
    SELECT part1, supplier
    FROM parts
    WHERE part1 IN (
        SELECT part1
        FROM parts
        GROUP BY part1
        HAVING COUNT(DISTINCT supplier) > 1
    )
    ORDER BY part1, supplier;
""")
for row in cursor.fetchall():
    print(f"{row[0]}, {row[1]}")

# 场景2:仅获取符合条件的part1
print("\n=== 仅part1列表 ===")
cursor.execute("""
    SELECT DISTINCT part1
    FROM parts
    GROUP BY part1
    HAVING COUNT(DISTINCT supplier) > 1
    ORDER BY part1;
""")
for part in cursor.fetchall():
    print(part[0])

# 关闭数据库连接
conn.close()

运行这段代码后,就能得到你想要的两种结果啦~

内容的提问来源于stack exchange,提问作者Vera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:08:48