php - 仅当 id 不同时才选择列 MySQL

标签 php mysql sql

我有下表:

  AMAZON_ID  |    DATE    |  STATUS
   1         | 01/03/2014 |  Pending
   1         | 01/03/2014 |  Shipped
   2         | 01/04/2014 |  Pending
   3         | 01/05/2014 |  Cancelled
   4         | 01/06/2014 |  Pending

如何从状态等于Pending的表中选择最早的日期,其中id的计数不超过1,它应该像下面这样:

  AMAZON_ID  |    DATE    |  STATUS
   2         | 01/04/2014 |  Pending

我想不通,这是我目前所拥有的,但它不起作用:

SELECT date
FROM table
WHERE status = 'Pending'
      AND COUNT(id) < 2
ORDER BY date ASC
LIMIT 1;

最佳答案

使用子查询对 COUNT 为 1 的 id 进行 GROUP BY。确保您的 id 是 IN 此子查询的结果,status 为 pending。然后 ORDER BY 日期和 LIMIT 到第一个结果。

SELECT date
FROM table
WHERE
  status = 'Pending' AND
  id IN (
    SELECT id
    FROM table
    GROUP BY id
    HAVING COUNT(*) = 1
  )
ORDER BY date ASC
LIMIT 1;

关于php - 仅当 id 不同时才选择列 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21032281/

相关文章:

php - 为什么我的 MySQL 查询返回多维数组而不是一维数组?

php - 如何从 MYSQL 表中获取数据到 Android 应用程序

MySql复制一行并替换副本中的部分字段

php - MySQL 中两个日期列之间的差异

php - MySQL 任何 Select 语句的列名

mysql - 获取插入查询以在 . asp.net中VB点击事件

mysql - 简单的选择查询优化

sql - postgresql - 选择 4 列,其中 1 列需要过滤

php - 将文件路径保存到数据库/SQL

php - 在 PHP 中使用 strrpos()