【问题标题】:Use query results in another sql query在另一个 sql 查询中使用查询结果
【发布时间】:2016-12-05 08:25:06
【问题描述】:

请帮忙,因为这已经变成一个几乎没有睡眠的一周了..

我有一张名为 Products 的表, 使用这些列:id |产品名称 |类别 |子类别 |添加日期 |价格 。

如何从该表中每个子类别中添加的最后一个产品中获取 ID 和类别?

到目前为止,这有点工作,但它只返回子类别,我还需要类别和 ID

$sql = mysql_query("SELECT DISTINCT subcategory FROM products ORDER BY id DESC LIMIT 12");

如果我尝试类似的东西

$sql = mysql_query("SELECT DISTINCT id, category, subcategory FROM products ORDER BY id DESC LIMIT 12");

它只是返回所有内容..

谢谢大家

【问题讨论】:

  • 有一个子查询返回每个子类别的最后一个产品。加入该结果。
  • 为您的表结构提供示例数据
  • 不要使用mysql_-functions,它们已经过时、不推荐使用,并在 PHP7 中被删除。请改用mysqli_PDO
  • @NewbeeDev 帖子的第一行哈哈,他需要睡觉!

标签: php mysql sql


【解决方案1】:

首先:按子类别对它们进行分组

GROUP  BY subcategory

然后将条件设置为id = (select your id of latest product according to its subcategory)

id = (SELECT id 
         FROM   products 
         WHERE  products.subcategory = Product.subcategory 
         ORDER  BY created DESC 
         LIMIT  1) 

所以你的查询会是这样的

SELECT * 
    FROM   products Product 
    WHERE  id = (SELECT id 
                 FROM   products 
                 WHERE  products.subcategory = Product.subcategory 
                 ORDER  BY created DESC 
                 LIMIT  1) 
GROUP  BY subcategory

【讨论】:

  • 伙计,你在这里所做的远远超出了我的预期:)))谢谢你,你救了我!你比我之前问过的任何人都更了解整个问题..还有桌子和所有东西..pfff..谢谢!!
【解决方案2】:

试试这个

SELECT * FROM `products` GROUP BY subcategory ORDER By id DESC

MySQL 扩展已弃用并从 php7 中删除,因此请使用 mysqli 或 PDO

【讨论】:

    【解决方案3】:

    将您的查询更改为

    SELECT id, category, subcategory FROM products GROUP BY (subcategory) ORDER BY id DESC LIMIT 12
    

    【讨论】:

      【解决方案4】:

      如果idAUTO_INCREMENT,你可以这样做:

      SELECT * FROM `products` WHERE id IN ( SELECT MAX(id) FROM `products` GROUP BY subcategory)
      

      【讨论】:

        猜你喜欢
        • 2016-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-06
        • 1970-01-01
        相关资源
        最近更新 更多