sql >> Database >  >> RDS >> PostgreSQL

Hoe u twee subquery's samenvoegt in SQLAlchemy en postgresql

ik heb een iets andere benadering gebruikt:

# the first subquery, select all ids from SOME_TABLE where some_field is not NULL
s1 = select([SOME_TABLE.c.id]).where(SOME_TABLE.c.some_field != None)

# the second subquery, select all ids from SOME_TABLE where some_field is NULL
s2 = select([SOME_TABLE.c.id]).where(SOME_TABLE.c.some_field != None)

# union s1 and s2 subqueries together and alias the result as "alias_name"
q = s1.union(s2).alias('alias_name')

# run the query and limit the aliased result to 10
session.query(q).limit(10)

Hier is de geproduceerde sql:

SELECT alias_name.id AS alias_name_id 
FROM (SELECT some_table.id AS id 
FROM some_table 
WHERE some_table.some_field IS NOT NULL UNION SELECT some_table.id AS id 
FROM some_table 
WHERE some_table.some_field IS NULL) AS alias_name 
LIMIT 10

Ik denk dat dit het resultaat is dat je wilde.




  1. stop met het invoegen van gegevens in de database bij het vernieuwen van de pagina

  2. GROUP BY en COUNT met ActiveRecord

  3. Hoe PosgreSQL txid_current() waarde te interpreteren

  4. Dubbele invoegingen vermijden zonder unieke beperking in de doeltabel?