我正在使用 SQL 服務器。
我想運行一個嵌套查詢,獲取結果并對完整的嵌套查詢結果進行兩個內連接。
我的嵌套查詢如下:
SELECT
table1.unique_id,
table1.a1,
table1.a2,
table1.cty,
table1.ctry,
FROM table1
WHERE table1.unique_id IN (
SELECT
unique_id
FROM table2
WHERE age = 22
)
該查詢回傳我想要的所有用戶都是 22 歲的列。
我現在想將來自兩個不同表的 2 個單獨的查詢組合到這個查詢上,一個是獲取電話號碼,一個是獲取電子郵件。所有表共享欄位“unique_id”,我想使用 unique_id 將電子郵件表和電話表加入到此查詢中。
SELECT
table3.phone_number1
table3.phone_number2
FROM table3;
SELECT
table4.email
FROM table4;
我基本上想要這樣的東西,但我無法獲得正確的語法/格式:
SELECT
table1.unique_id,
table1.a1,
table1.a2,
table1.cty,
table1.ctry,
table3.phone_numer1,
table3.phone_numer2,
table4.email
FROM table1
WHERE table1.unique_id IN (
SELECT
unique_id
FROM table2
WHERE age = 22
)
INNER JOIN table3
ON table1.unique_id = table3.unique_id
INNER JOIN table4
ON table1.unique_id = table4.unique_id
任何幫助將不勝感激。
編輯:
從此處的答案中獲得幫助后,我意識到我的 table4 電子郵件表的行數比我預期的要多。該表設定如下:

我只想從具有最高 email_id 的 table4 中獲取電子郵件值...在這種情況下,由于它具有最高的電子郵件值,因此它將是 [email protected]。
uj5u.com熱心網友回復:
您在查詢中的語法在以下方面不正確:您將WHERE子句放在 yourFROM和關聯JOIN的 s 之間。
您發布的代碼大部分應該可以作業,但是您需要將WHERE子句及其子查詢移動到s之后的位置JOIN。
或者,您可以將子查詢重述為
INNER JOIN table2
ON table1.unique_id = table2.unique_id
在所有sage = 22之后的WHERE子句中帶有條件 of 。JOIN
無論哪種方式,您都WHERE必須放在JOIN定義任何 s 之后。
uj5u.com熱心網友回復:
嘗試以下代碼:
SELECT
table1.unique_id,
table1.a1,
table1.a2,
table1.cty,
table1.ctry,
table3.phone_numer1,
table3.phone_numer2,
table4.email
FROM table1
INNER JOIN table3
ON table1.unique_id = table3.unique_id
INNER JOIN table4
ON table1.unique_id = table4.unique_id
WHERE table1.unique_id IN (
SELECT
unique_id
FROM table2
WHERE age = 22
)
或者另一種方式:
select D.*,
table3.phone_numer1,
table3.phone_numer2,
table4.email
from
(
SELECT
table1.unique_id,
table1.a1,
table1.a2,
table1.cty,
table1.ctry,
FROM table1
WHERE table1.unique_id IN (
SELECT
unique_id
FROM table2
WHERE age = 22
)
) as D
INNER JOIN table3
ON D.unique_id = table3.unique_id
INNER JOIN table4
ON D.unique_id = table4.unique_id
考慮到您存盤電子郵件資訊的表具有以下結構,我們的操作如下。
unique_id , email_ID , email
使用 Windows 函式并使用以下代碼,選擇與每個 unique_id 相關的最后一封電子郵件。然后將這個表連接到其他表就足夠了。
select T1.Unid, T1.email_ID , T1.email from
(
select ROW_NUMBER() over(partition by t.unique_id order by t.unique_id desc) as Unid, t.email_ID , t.email from table4 t
) T1 where T1.Unid = 1
最后,您的查詢將如下所示。
SELECT
table1.unique_id,
table1.a1,
table1.a2,
table1.cty,
table1.ctry,
table3.phone_numer1,
table3.phone_numer2,
table4.email
FROM table1
INNER JOIN table3
ON table1.unique_id = table3.unique_id
INNER JOIN
(
select T1.Unid, T1.email_ID , T1.email from
(
select ROW_NUMBER() over(partition by t.unique_id order by t.email_ID desc) as Unid, t.email_ID , t.email from table4 t
) T1 where T1.Unid = 1
) table4
ON table1.unique_id = table4.unique_id
WHERE table1.unique_id IN
(
SELECT
unique_id
FROM table2
WHERE age = 22
)
如果這個答案有幫助,請選擇它作為答案。通過檢查標記。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/415830.html
標籤:
上一篇:SSIS自定義列屬性
