SQLAlchemy中不带列名的VALUES子句(与sqlite兼容)

zaq34kh6  于 2022-12-27  发布在  SQLite
关注(0)|答案(1)|浏览(130)

我已经看到这里的答案VALUES clause in SQLAlchemy并不令人满意。基本上,SQLAlchemy强制您为每个列指定一个名称,将查询构建为

SELECT * FROM (VALUES (1, 2, 3)) AS sq (colname1, colname2);

而不是在不指定(colname1, colname2)时使用默认名称“column1,column2,...”。这样做的问题是指定列名与sqlite不兼容。您知道这样做的方法吗?我正在考虑使用裸文本查询。这样做的问题是我的完整查询是

SELECT pairs.column1 AS element_id,
    pairs.column2 as variant_id,
    products_elements.name as element_name,
    elements_variants.name as variant_name
FROM (
        VALUES (1, 2),
            (2, 2),
            (3, 1)
    ) AS pairs
    JOIN (products_elements, elements_variants) ON (
        products_elements.id = pairs.column1
        AND elements_variants.id = pairs.column2
    );

我不知道如何嵌入这些值。谢谢

vu8f3i0k

vu8f3i0k1#

如果需要原始查询,可以使用CTE命名列:

WITH pairs(colname1, colname2) AS (VALUES (1, 2), (2, 2), (3, 1))
SELECT pairs.colname1 AS element_id,
       pairs.colname2 AS variant_id,
       products_elements.name AS element_name,
       elements_variants.name AS variant_name
FROM pairs
JOIN products_elements ON products_elements.id = pairs.colname1 
JOIN elements_variants ON elements_variants.id = pairs.colname2;

相关问题