【问题标题】:MYSQL / Select Query by 2-column relationMYSQL / 通过 2 列关系选择查询
【发布时间】:2014-09-26 19:03:23
【问题描述】:

我只想选择那些状态等于 2 的 ID。如果同一个 ID 的值也大于 2,那么应该跳过所有出现的这个 ID。

如下例:

<table>
  <tr>
    <td>id</td>
    <td>status</td>
  </tr>
  <tr>
    <td>5</td>
    <td>2</td>
  </tr>
  <tr>
    <td>5</td>
    <td>3</td>
  </tr>
  <tr>
    <td>6</td>
    <td>2</td>
  </tr>
  <tr>
    <td>6</td>
    <td>3</td>
  </tr>
  <tr>
    <td>7</td>
    <td>2</td>
  </tr>
</table>
我的预期结果是“7”。

【问题讨论】:

    标签: mysql select group-by


    【解决方案1】:

    这是你需要的

    select x.id from mytable x where status=2 and NOT EXISTS(Select y.id from mytable y where status > 2 and x.id = y.id); 
    

    【讨论】:

      【解决方案2】:

      这将为您提供最大状态为 2 的所有 ID 的列表。其结果将为“7”:

      SELECT ID FROM myTable
      GROUP BY ID
      HAVING MAX(Status) = 2
      

      【讨论】:

      • Shahrukh - 你能发布你的查询吗?我的答案中的那个只返回一列,而您上面的评论说您返回了两列。
      【解决方案3】:
      select id 
      from table t1
      inner join (select id, count(*) cnt from table group by id) t2 on
        t2.id = t1.id
        and t2.cnt = 1
      where status = 2
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-30
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 2021-05-21
        • 1970-01-01
        相关资源
        最近更新 更多