簡體   English   中英

SQL 查詢查找所有未開店的州?

[英]SQL query to find all the states where store is not open?

我有表 A Stores,其中包含商店信息。 表 B 具有所有狀態信息。 我需要將表 A 連接到表 B 以獲取商店開張的所有州。 現在我需要找到商店未開放的所有州。

表一:

專賣店 州代碼
店鋪A 國會議員
B店 向上
B店 國會議員
門店 C JK

表 B:

州代碼 州名
國會議員 中央邦
向上 北方邦
JK 查謨克什米爾

Output表:

專賣店 州代碼 州名
店鋪A 向上 北方邦
店鋪A JK 查謨克什米爾
B店 JK 查謨克什米爾
門店 C 向上 北方邦
門店 C 國會議員 中央邦

我試過這個:

SELECT *
FROM tableB
LEFT OUTER JOIN tableA
  ON tableA.<stateCode> = tableB.<stateCode>
WHERE tableA.<stateCode> IS NULL

如果您使用 Microsoft SQL 服務器,請嘗試此查詢

SELECT Distinct
       A.Stores,
       B.StateCode,
       B.StateName
FROM TableA as A INNER JOIN TableB as B
ON B.StateCode Not IN (SELECT Statecode FROM TableA WHERE Stores = A.Stores)

使用示例:

SELECT
  `A`.`Stores`,
  `B`.`StateCode`,
  `B`.`StateName`
FROM
  `A`
  INNER JOIN `B` ON `B`.`StateCode` Not IN (
    SELECT
      `a1`.`Statecode`
    FROM
      `A` As `a1`
    WHERE
      `a1`.`Stores` = `A`.`Stores`
  )
GROUP By
  `A`.`Stores`,
  `B`.`StateCode`,
  `B`.`StateName`;

在 tableB 和來自 tableA 的不同商店的值之間進行交叉連接以獲得(商店,狀態)的所有可能組合,然后進行左連接,如下所示:

select DA.Stores, B.StateCode, B.StateName
from tableB B cross join 
(
  select distinct Stores from tableA
) DA
left join tableA TA
on TA.Stores = DA.Stores and 
   TA.StateCode = B.StateCode
where TA.Stores is null
order by DA.Stores

看演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM