我有两张表TableA
和TableB
,如下所示:
TableA
ItemCode |Qty |BarCode |Brand
AC |2 |123 |BRO
AB |2 |1234 |BRO
AD |2 |1234 |BRO
TableB
ItemCode |Brand |BarCode |Qty
AC |BRO |123 |1
AB |BRO |1234 |2
我尝试获取记录TableA
不等于TableB
的数量且TableA
中的记录不在TbleB
我试过的查询是
SELECT
A.ItemCode AS ItmA, B.ItemCode AS ItmB, A.Qty AS AQty, B.Qty AS BQty
FROM
TableA A
INNER JOIN
TableB B ON A.Brand = B.Brand
WHERE
(A.Qty <> B.Qty)
AND A.ItemCode NOT IN (B.ItemCode)
我得到这样的结果
ItmA |ItmB |AQty |BQty
--------------------------------
AB | AC | 2 | 1
AD | AC | 2 | 1
但我想通过ItemCode AC
和AD
答案 0 :(得分:1)
如果您想从TableA
获取不属于TableB
的记录,请考虑LEFT OUTER JOIN
:
SELECT A.ItemCode AS ItmA,B.ItemCode AS ItmB,A.Qty AS AQty,B.Qty AS BQty
FROM TableA A LEFT JOIN
TableB B
ON A.Brand = B.Brand
WHERE A.Qty <> B.Qty OR B.Brand IS NULL;
其余的只是应用查询的逻辑。
您也可以将其表达为:
SELECT A.ItemCode AS ItmA,B.ItemCode AS ItmB,A.Qty AS AQty,B.Qty AS BQty
FROM TableA A LEFT JOIN
TableB B
ON A.Brand = B.Brand AND A.Qty = B.Qty
WHERE B.Brand IS NULL;
但我认为第一个版本接近于你如何表达规则。