简体   繁体   English

"UNION 与 CTE 一起工作,但不是没有?"

[英]UNION works with CTE, but not without?

I'm using PostgreSQL 11.12.我正在使用 PostgreSQL 11.12。

I have this query:我有这个查询:

select first_name, length(first_name)
from db_employee
where length(first_name) = 
(select max(length(first_name)) from db_employee)
order by 1 
limit 1
union
select first_name, length(first_name)
from db_employee
where length(first_name) = 
(select min(length(first_name)) from db_employee)
order by 1 
limit 1

To include a LIMIT<\/code> clause per SELECT<\/code> in a UNION<\/code> query, you must add parentheses<\/strong> .要在UNION<\/code>查询中包含每个SELECT<\/code>的LIMIT<\/code>子句,您必须添加括号<\/strong>。 Like:喜欢:

(  -- !
SELECT first_name, length(first_name)
FROM   db_employee
WHERE  length(first_name) = (SELECT max(length(first_name)) FROM db_employee)
ORDER  BY 1
LIMIT  1
) -- !
UNION
( -- !
SELECT first_name, length(first_name)
FROM   db_employee
WHERE  length(first_name) = (SELECT min(length(first_name)) FROM db_employee)
ORDER  BY 1
LIMIT  1
) -- !

just put both the sql parts in separate brackets and keep union outside.只需将两个 sql 部分放在单独的括号中,并将 union 放在外面。

    (select first_name, length(first_name)
    from db_employee
    where length(first_name) = 
    (select max(length(first_name)) from db_employee)
    order by 1
    limit 1)
    union
    (select first_name, length(first_name)
    from db_employee
    where length(first_name) = 
    (select min(length(first_name)) from db_employee)
    order by 1
    limit 1);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM