有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)。 –