首页 > 解决方案 > 在有 2 行的 1 个字段上仅选择 1 行

问题描述

从我的数据库中获取数据时出现问题。

问题是当我只想从 1 个字段中获取 1 行时。

例子 :

在表 ms_file 我有 2 个字段(product_id,路径)

  1. ..../dir/bg.1
  2. ..../dir/bg.2

具有相同的 product_id。

如果我使用加入此表(ms_file)我在使用 group by 时出错

列表不在 GROUP BY 子句中,并且包含非聚合列...。它在功能上不依赖于 GROUP BY 子句中的列;

因为在这个查询中,我们得到了具有相同 product_id 的不同 2 行

如何解决?

select ms_product.*, ms_file.path, users.name as users_name, ms_subcategory.name as subcategory from ms_product 
        left join users ON users.id = ms_product.users_id
        left join ms_subcategory ON ms_subcategory.id = ms_product.subcategory_id
        left join ms_file ON ms_file.product_id = ms_product.product_id
        where ms_product.status = "A" group by ms_product.product_id order by ms_product.created_at desc LIMIT 4

如果我没有在上面的这个查询中输入 GROUP BY,我没有错误。但此查询将显示 ms_file 中的 2 行

如果我在上面的这个查询中使用 GROUP BY,我得到了错误。

标签: phpmysqllaravel

解决方案


已解决,我使用组 concat 并通过 php 爆炸来获取第一个数组。


推荐阅读