我在這裏有這個查詢,我需要將其轉換爲更新語句。使用DISTINCT結果將SELECT查詢轉換爲UPDATE。 Microsoft SQL服務器
查詢:
SELECT DISTINCT RIGHT(Domain, LEN(Domain) - CHARINDEX('@', Domain)) AS email_domain
FROM dbo.DomainsV7
WHERE Domain IS NOT NULL;
我有一些數據其中之一是存儲在一個名爲「域」列電子郵件的表。
我需要更新「域」於是我劃的郵件,只留域(例如:[email protected]將查詢後像 這testmail.com)。所以域列中存儲 內超過290000電子郵件,也有一些空的...
正如我說我找域名,我不需要留下的數據,幷包括@也不要需要在 域列中重複的域列表或NULL值。所以我在尋找的是一個查詢,它將修剪 電子郵件以將它們轉換爲域,同時查詢將 刪除具有NULL值和重複域的數據。
最終結果應該是隻有唯一域且內部沒有NULL的域。
表名:dbo.DomainsV7
表結構:
COLUMN NAME | DATA TYPE | ALLOW NULLS
----------------+---------------------+-----------------
Domain | Varchar(60) | YES
^犯了錯誤允許在首位NULL數據。
下面是表現在的樣子:
+-------------------------+
| Domain |
+-------------------------+
| [email protected] |
| [email protected] |
| [email protected] | <- Will be removed after update (Duplicate)
| ... |
+-------------------------+
這裏是我所需要的表更新後看:
+-------------------------+
| Domain |
+-------------------------+
| fakemail.com |
| randommail.com |
| ... |
+-------------------------+
我在想遊標,但我知道它會慢,但我沒有得到你的答案,你可以請eaborate你的答案 –
一切順利,直到第三步。我收到此錯誤消息:「消息5308,級別16,狀態1,行34 窗口函數和NEXT VALUE FOR函數不支持整數索引作爲ORDER BY子句表達式。「 – Vissow
你不可以按'1'排序,替換爲'按域排序' –