【问题标题】:left join group by max - how to read record [duplicate]按最大左加入组-如何读取记录[重复]
【发布时间】:2018-05-13 02:31:35
【问题描述】:

我无法从 data 列读取记录,为什么? 代码:

$_query = mysqli_query($mysqli , "SELECT  o.id,o.surname,o.name,so.data FROM mowcy AS o
          LEFT JOIN zeb AS so ON so.id=o.id AND so.mowca=o.mowca 
           WHERE 
             o.archiwum = 0 
             AND o.id<>1
             AND o.mowca = 3

              GROUP BY o.id
               ORDER BY ISNULL(o.id) desc, MAX(so.data) ") 
                or die(mysqli_error($mysqli));    

显示错误:

列表不在 GROUP BY 子句中并且包含非聚合列 'rafik73_tereny.so.data' 在功能上不依赖于 GROUP BY 子句中的列;这与 sql_mode=only_full_group_by

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这样试试;

    SELECT  o.id,MAX(so.data) FROM mowcy AS o
              LEFT JOIN zeb AS so ON so.id=o.id AND so.mowca=o.mowca 
               WHERE 
                 o.archiwum = 0 
                 AND o.id<>1
                 AND o.mowca = 3
                  GROUP BY o.id
                   ORDER BY ISNULL(o.id) desc, MAX(so.data)
    

    当您在查询中对某些内容进行分组时,错误会指向您,因此您应该只选择分组字段和聚合列

    【讨论】:

    • data 不显示任何值。 data 只存在于 zeb 表中
    • 检查您的妈妈数据和位置条件。 "o.archiwum = 0 AND o.id1 AND o.mowca = 3"
    • 条件“o.archiwum = 0 AND o.id1 AND o.mowca = 3”都可以。当 SELECT 中将 MAX(so.data) 更改为 so.data 并在 GROUP BY 中添加 so.data 时,data 的值会显示出来,但是是重复的。
    • 在 SELECT 中添加别名 maxdata 到 MAX(so.data) 解决问题。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-26
    • 2011-02-09
    • 1970-01-01
    • 2018-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多