如何显示 mysql 不带 NULL 的查询?

How show mysql query without NULL?

如何显示 mysql 不带 NULL 的查询? 我想向我的猎物展示“LAG(title) OVER(PARTITION BY emp_no)”不为空,我只需要 titles.emp_no = “LAG(title) OVER(PARTITION BY emp_no )"

我的查询:

SELECT titles.emp_no, LAG(title) OVER(PARTITION BY emp_no)

来自标题;

子查询您当前的查询并根据滞后值进行过滤:

WITH cte AS (
    SELECT emp_no, LAG(title) OVER (PARTITION BY emp_no ORDER BY <col>) lag_title
    FROM titles
)

SELECT emp_no, lag_title
FROM cte
WHERE lag_title IS NOT NULL;

请注意,我在 LAG 中添加了一个 ORDER BY 子句,没有它就没有多大意义。

您可以简单地使用:

select emp_no, max(title) as title
from titles
group by emp_no

如果没有 emp_no 和 title:NOT NULL 的行,结果将包括一些 title:NULL。如果你也想消除那些(并且只显示那些至少有一个 nn-Null title:

select emp_no, max(title) as title
from titles
where title is not null
group by emp_no

使用 LAG 有什么具体原因吗?如果您想获得以前的(以特定方式排序的)标题(并且该标题是 not-null),那将是有意义的;但你没有指定订单。

@Vladyslav Nazarov 如果你愿意,你也可以使用 max(title)over(partition by emo_no order by ---only if you want or need----) 在这种情况下你可以提高性能而且你不使用 group by