Py学习  »  DATABASE

如何在没有NULL的情况下显示mysql查询?

Vladyslav Nazarov • 3 年前 • 1613 次点击  

如何在没有NULL的情况下显示mysql查询? 我想显示我的方格,其中“LAG(title)OVER(PARTITION BY emp_no)”不是空的,我只需要titles。emp_no=“滞后(标题)超过(按emp_no划分)”

我的问题是:

选择标题。emp_编号,滞后(标题)超过(按emp_编号划分) 来自头衔;

enter image description here

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/133250
 
1613 次点击  
文章 [ 2 ]  |  最新文章 3 年前
tinazmu
Reply   •   1 楼
tinazmu    3 年前

你可以简单地使用:

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

如果没有标题为NOT NULL的emp_no行,则结果将包括一些标题为NULL的行。如果您想删除这些内容(并且仅显示至少有一个nn空标题的内容):

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

使用LAG有什么具体原因吗?如果你想得到一个以前的(以特定方式排序的)标题(并且该标题不是空的),这是有意义的;但你没有指定订单。

Tim Biegeleisen
Reply   •   2 楼
Tim Biegeleisen    3 年前

子查询当前查询并基于滞后值进行筛选:

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;

注意,我添加了一个 ORDER BY 条款至 LAG ,没有它就没有什么意义。