当前位置: 主页 > 数据库

您试图重写现有数据库-车型库 数据

发布时间:2023-03-12 07:06   浏览次数:次   作者:佚名

【解决方案1】:

你可以这样试试

SELECT id
FROM yourTable
GROUP BY id
HAVING count(*)=1
       and max(orderid)=0;

【讨论】:

【解决方案2】:

如果你想采用聚合方式您试图重写现有数据库,我更喜欢:

SELECT id
FROM yourTable
GROUP BY id
HAVING MIN(orderid) = MAX(orderid) AND MIN(orderid) = 0;

此查询应该受益于(id, groupid) 上的索引

我的回答没有选择 groupid 值,但我们已经知道对于整个结果集,该值必须为零。

【讨论】:

【解决方案3】:

如果您知道 / 订单 ID 的顺序将始终为 0、1、2 等,并且您在 (id, orderid) 上有一个索引,我会自行加入您试图重写现有数据库,因此它不需要查询对于那些可能有 100 多个订单的 ID

select
      yt.id
   from
      YourTable yt
         LEFT JOIN YourTable yt2
            on yt.id = yt2.id
           and yt2.orderid = 1
   where
          yt.orderid = 0
      AND yt2.id is null

所以它只会关心订单 ID = 0 或 1,并且只返回那些没有找到 orderID = 1 的订单。

【讨论】: