Raw SQL required:
SELECT id FROM (SELECT some_table.id FROM some_table WHERE some_table.some_field IS NULL) AS subq1 UNION (SELECT some_table.id WHERE some_table.some_field IS NOT NULL) LIMIT 10;
Here is the python code:
import sqlalchemy SOME_TABLE = sqlalchemy.Table( 'some_table', sqlalchemy.MetaData(), sqlalchemy.Column('id', sqlalchemy.Integer, primary_key=True), sqlalchemy.Column('some_field', sqlalchemy.Text)) stmt_1 = sqlalchemy.sql.select(SOME_TABLE.columns).where(SOME_TABLE.columns.some_field != None) stmt_2 = sqlalchemy.sql.select(SOME_TABLE.columns).where(SOME_TABLE.columns.some_field == None) # This gets a programming error. stmt_1.union(stmt_2).limit(10);
Here is the SQL output (with modified parameters) that gets this error: ERROR: syntax error in or next to UNION:
SELECT some_table.id, some_table.some_field FROM some_table WHERE some_table.some_field IS NOT NULL LIMIT 10 UNION SELECT some_table.id, some_table.some_field FROM some_table WHERE some_table.some_field IS NULL LIMIT 10 LIMIT 10
How can I alias subqueries?
source share