Sql 交叉乘法查询
我想获得客户机器表中尚未包含的序列号。但相反,行是交叉相乘的。这是我的密码Sql 交叉乘法查询,sql,Sql,我想获得客户机器表中尚未包含的序列号。但相反,行是交叉相乘的。这是我的密码 SELECT serial_number.serial_no FROM product INNER JOIN serial_number ON product.productid = serial_number.productid INNER JOIN customer_machine ON NOT( customer_
SELECT serial_number.serial_no
FROM product
INNER JOIN serial_number
ON product.productid = serial_number.productid
INNER JOIN customer_machine
ON NOT( customer_machine.serial_no = serial_number.serial_no )
需要帮忙吗 这应该可以:
SELECT serial_number.serial_no
FROM product P
INNER JOIN serial_number S
ON P.productid = S.productid
WHERE NOT EXISTS (SELECT 1 FROM customer_machine
WHERE serial_no = S.serial_no)
您现在要做的是,对于与
客户机
中的相同编号不匹配的序列号
,加入客户机
;因此,您正在将结果相乘。您可能只想排除已经存在的特定序列号,而不是将它们加入。您可以在where子句中执行此操作:
SELECT serial_number.serial_no
FROM product
INNER JOIN serial_number
ON product.productid = serial_number.productid
LEFT JOIN customer_machine
ON ( customer_machine.serial_no = serial_number.serial_no)
WHERE customer_machine.serial_no IS NULL
SELECT serial_number.serial_no
FROM product
INNER JOIN serial_number
ON product.productid = serial_number.productid
WHERE serial_number.serial_no NOT IN ( SELECT customer_machine.serial_no
FROM customer_machine )
如果您加入
产品
和序列号
表,结果将是序列号,它们在产品中,但不在客户机器中
。由于上面的答案处理了这种情况,因此此查询是使用左连接并忽略产品表来选择不在客户机器中的序列号(如您所述)
一些示例数据、所需的输出等…我认为您需要从连接条件中获取客户机.serial\u no为NULL
条件,并将其添加到的WHERE
,否则它根本不会过滤结果
select s.serial_no
from serial_number s
left join customer_machine c on s.serial_no = c.serial_no
where c.serial_no is null