[英]Query to find emails from SELECT FROM VALUES
我的查詢應該只帶回特定的結果集,但它會返回所有值。 基本上我要做的是用另一個表中的值更新一個表中的 email 列,內部查詢的工作原理是我可以獲得正確的名字/姓氏,但外部查詢返回所有電子郵件,我只想要來自列出的值的電子郵件。
SELECT DISTINCT WorkEmail FROM stafftbl WHERE EXISTS (
SELECT DISTINCT FirstName,LastName -- inner query starts here
FROM assignments
WHERE Email IN
(SELECT email
FROM
(VALUES
('josh@myjob.org'),
('pete@myjob.org'),
('willy@myjob.org'),
('linda@myjob.org'),
('mary@myjob.org'),
('james@myjob.org'),
('ahmed@myjob.org'),
('horatio@myjob.org'),
('luke@myjob.org'),
('terri@myjob.org'),
('chuck@myjob.org'),
('betty@myjob.org'),
('bigbob@myjob.org'),
('arthur@myjob.org'),
('Ajessica@myjob.org') -- there's a lot more than these.
)E(email)) -- inner query ends here
)
我知道我可能使用存在錯誤,但我知道我在正確的軌道上,因為我可以從assignments
表中取回名稱對,我只是不想返回整個列。 任何幫助,將不勝感激。
編輯:
是的, assignments
中存在重復,並且 WorkEmail 與所有 Email 都不匹配! 如果我可以從列表中獲取與stafftbl
表中的名字/姓氏匹配的適當電子郵件,我將對assignments
email 列進行更新。
我懷疑您在子查詢中缺少相關條件。 沒有它,只要assignments
中的任何行具有可以在列表中找到的 email,外部查詢就會返回來自stafftbl
的所有行。
SELECT DISTINCT WorkEmail
FROM stafftbl s
WHERE EXISTS (
SELECT 1
FROM assignments a
WHERE
a.Email = s.WorkEmail -- correlation to the outer query
AND a.Email IN (
SELECT email
FROM (VALUES
('josh@myjob.org'),
('pete@myjob.org'),
('willy@myjob.org'),
('linda@myjob.org'),
('mary@myjob.org'),
('james@myjob.org'),
('ahmed@myjob.org'),
('horatio@myjob.org'),
('luke@myjob.org'),
('terri@myjob.org'),
('chuck@myjob.org'),
('betty@myjob.org'),
('bigbob@myjob.org'),
('arthur@myjob.org'),
('Ajessica@myjob.org')
) E(email)
)
)
注意 1:不需要使用DISTINCT
並從EXISTS
子查詢返回特定列。 這個表達式是為了檢查子查詢是否返回了一些記錄,結果基本上被丟棄了。 我將其更改為SELECT 1
。
注意 2:我還懷疑您在外部查詢中不需要DISTINCT
(除非在stafftbl
中有重復的電子郵件。
注意 3:由於您的查詢,在子查詢中使用表構造函數VALUES()
是不必要的。 您可以只使用IN
,如:
AND a.Email IN ('josh@myjob.org', 'pete@myjob.org', ...)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.