代码之家  ›  专栏  ›  技术社区  ›  Vladyslav Nazarov

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

  •  0
  • Vladyslav Nazarov  · 技术社区  · 2 年前

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

    我的问题是:

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

    enter image description here

    2 回复  |  直到 2 年前
        1
  •  2
  •   Tim Biegeleisen    2 年前

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

    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 ,没有它就没有什么意义。

        2
  •  0
  •   tinazmu    2 年前

    你可以简单地使用:

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