尝试从名为tblTooling的单个表中提取数据,其中两个TlPartNo数字等于不同的值,并且TlToolNo对于这些TlPartNo不相等。这是一个Access DB,以下语句使我接近,但仍然提供了太多的数据。
SELECT DISTINCT
tblTooling.TlToolNo,
tblTooling.TlPartNo,
tblTooling.TlOP,
tblTooling.TlQuantity
FROM tblTooling, tblTooling AS tblTooling_1
WHERE (((tblTooling.TlToolNo)<>tblTooling_1.TlToolNo)
AND ((tblTooling.TlPartNo)="10290722")
AND ((tblTooling_1.TlPartNo)="10295379"));
包含的图像具有tblTooling结构和数据。加上查询的预期结果。
答案 0 :(得分:0)
当您使用 PartNo 值时,您似乎想要排除 ToolNo 值。在这种情况下,您可以通过 ToolNo 对中间结果进行分组,并查看在这样的组中是否只有一个 PartNo (使用canvas.clip{whatever}(rect/region/path, op).
)。在这种情况下,保留该记录,并在外部查询中,获取添加到其中的另外两列:
having
请注意,对于您的示例数据,这将返回4行:
SELECT DISTINCT
tblTooling.TlToolNo,
tblTooling.TlPartNo,
tblTooling.TlOP,
tblTooling.TlQuantity
FROM tblTooling
INNER JOIN (
SELECT TlToolNo,
Min(TlPartNo) AS MinTlPartNo,
Max(TlPartNo) AS MaxTlPartNo
FROM tblTooling
WHERE TlPartNo IN ("10290722", "10295379")
GROUP BY TlToolNo
HAVING Min(TlPartNo) = Max(TlPartNo)
) AS grp
ON grp.TlToolNo = tblTooling.TlToolNo
AND grp.MinTlPartNo = tblTooling.TlPartNo
答案 1 :(得分:0)
我认为您可以使用not exists
执行此操作:
select t.*
from tblTooling as t
where not exists (select 1
from tblTooling as t2
where t2.TlPartNo in ("10290722", "10295379") and
t2.TlToolNo = t.TlToolNo and
t2.tiid <> t.tiid
) and
t.TlPartNo in ("10290722", "10295379");
这可以节省select distinct
,这应该会提升效果。