您试图重写现有数据库-车型库 数据
发布时间: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 的订单。
【讨论】: