有2個表A(列'a')和B(列'b')。我想查找表B列'b'的表A'a'列中每個值的出現次數。有2個表格,A(列a)和B(列b)。我想查找表A列a列中每個值的出現次數b列表b
目前,我正在使用蠻力的方法,它太慢了。有什麼可以更好地解決這個問題?
蠻力方法:
WHILE(SELECT COUNT(*) FROM A) > 0
BEGIN
DECLARE @Val VARCHAR(100);
DECLARE @ValSpaceMod VARCHAR(100);
DECLARE @ModSpaceValSpaceMod VARCHAR(100);
DECLARE @ModSpaceVal VARCHAR(100);
DECLARE @cnt integer;
SELECT TOP 1 @Val = a FROM A
SET @ValSpaceMod = @Val + ' %';
SET @ModSpaceVal = '% ' + @Val;
SET @ModSpaceValSpaceMod = '% ' + @Val + ' %';
SELECT @cnt = COUNT(*) FROM B
WHERE (LOWER(B.b) LIKE lower(@Val)
OR LOWER(B.b) LIKE lower(@ValSpaceMod)
OR LOWER(B.b) LIKE LOWER(@ModSpaceValSpaceMod)
OR LOWER(B.b) LIKE LOWER(@ModSpaceVal)
)
PRINT @Val + ' ' + CAST(@cnt AS VARCHAR)
DELETE A WHERE a= @Val
END
考慮使用[全文搜索](https://msdn.microsoft.com/en-us/library/ms142571.aspx)。 –