文章内容
2023/11/18 1:22:33,作 者: 黄兵
SQLAlchemy 查询去重
在SQLAlchemy中,要执行查询并去重,可以使用distinct
方法或distinct()
函数。
以下是使用distinct
方法的示例:
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import declarative_base, Session, relationship Base = declarative_base() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) addresses = relationship('Address', back_populates='user') class Address(Base): __tablename__ = 'addresses' id = Column(Integer, primary_key=True) email = Column(String) user_id = Column(Integer, ForeignKey('users.id')) user = relationship('User', back_populates='addresses') # 创建数据库连接 engine = create_engine('sqlite:///:memory:') Base.metadata.create_all(engine) # 创建会话 session = Session(engine) # 添加测试数据 user1 = User(name='User 1', addresses=[Address(email='user1@example.com'), Address(email='user1@example.com')]) user2 = User(name='User 2', addresses=[Address(email='user2@example.com'), Address(email='user2@example.com')]) session.add_all([user1, user2]) session.commit() # 执行查询并去重 distinct_emails = session.query(Address.email).distinct().all() print(distinct_emails)
在上面的示例中,distinct()
方法被用于去重查询结果中的电子邮件地址。
如果我们在使用group_by
等其他查询方法,也可以考虑在查询中使用distinct
来进行去重。
如果我们使用 MySQL 查询重复数据,应该怎么查询呢?
在MySQL中,也可以使用DISTINCT
关键字来执行查询并去重结果。下面是一个简单的示例:
-- 假设你有一个名为 `users` 的表,包含 `id` 和 `name` 列 SELECT DISTINCT name FROM users;
上述查询将返回去重后的所有不同的 name
列的值。
如果我们需要在多个列上执行去重,可以使用多个列名:
-- 在两列上执行去重 SELECT DISTINCT column1, column2 FROM your_table;
your_table
替换为你实际的表名,而 column1
和 column2
替换为要去重的列名。
同时如果我们希望在查询中使用更复杂的条件,并且同时要去重,可以在使用DISTINCT
的同时使用 WHERE
子句:
-- 在满足特定条件的情况下,对 name 列进行去重 SELECT DISTINCT name FROM users WHERE your_condition;
在上述查询中,将 your_condition
替换为实际的条件,以便根据需求进行过滤和去重。
其它相关推荐:
评论列表