![](/img/trans.png)
[英]How to write BigQuery/SQL query to divide average of a column in one table from column in second/another table
[英]How to write an SQL query that searches for a group of words from another table?
我正在嘗試為Stack Exchange自己的數據資源管理器編寫查詢。 此查詢將創建一個臨時表,其中包含常見拼寫錯誤的單詞列表及其正確的拼寫,然后搜索帖子以查找它們。
這是我到目前為止(減去評論):
DECLARE @SpellingMistakes TABLE (wrong VARCHAR(255), right VARCHAR(255))
INSERT INTO @SpellingMistakes (wrong, right)
VALUES ('ubunut', 'ubuntu')
SELECT Id as [Post Link]
FROM Posts
WHERE
...
這就是我被卡住的地方 - 在WHERE
子句中。 我需要一些方式來說“如果Posts.Body
包含任何@SpellingMistakes.wrong
”。 但是,我不知道該怎么做。
注意:數據資源管理器使用Microsoft SQL Server 2008 R2。
我不知道MS SQL,但大多數SQL實現都有一個“LIKE”等價物。 因此,在這種情況下,您可以加入兩個表並在JOIN條件中使用LIKE。
SELECT Id as link
FROM Posts P JOIN SpellingMistakes S
ON P.Body LIKE '%'+S.wrong+'%'
編輯:假設Posts
是一個大表(並且SpellingMistakes
也不是太小),這將需要大量資源。 解決此問題的一種方法是將表格Posts
拆分為較小的子集並構造多個語句。
SELECT Id as link
FROM (SELECT * FROM Posts WHERE Id<=10000) P
JOIN
SpellingMistakes S
ON P.Body LIKE '%'+S.wrong+'%'
SELECT Id as link
FROM (SELECT * FROM Posts WHERE Id<=20000 and Id>10000) P
JOIN
SpellingMistakes S
ON P.Body LIKE '%'+S.wrong+'%'
等等。
SELECT Id as PostLink
FROM Posts p
WHERE
EXISTS
(
SELECT *
FROM @SpellingMistakes
WHERE p.Body LIKE '%' + wrong + '%'
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.