0

我可能需要你的帮助......我有以下 MySQL 查询:

SELECT * FROM dbName1.Prospects A
LEFT JOIN dbName2.inbox B ON 
          substring(A.ProspectCellPhone, 2) = substring(B.SenderNumber, 4) OR 
          substring(A.ProspectCellPhone, 3) = substring(B.SenderNumber, 4) OR 
          substring(A.ProspectCellPhone, 4) = substring(B.SenderNumber, 4) 
LEFT JOIN dbName1.User C ON A.Username = C.Username
WHERE B.TextDecoded IS NOT NULL
AND substring(B.SenderNumber,1,1) = '+'
AND B.NotificationFlag = '0'

返回 125 结果...但是当我尝试使用相同的查询进行更新时,它只返回 45 个更新的结果...更新查询是:

UPDATE dbName1.Prospects A
LEFT JOIN dbName2 B ON 
            substring(A.ProspectCellPhone, 2) = substring(B.SenderNumber, 4) OR 
            substring(A.ProspectCellPhone, 3) = substring(B.SenderNumber, 4) OR 
            substring(A.ProspectCellPhone, 4) = substring(B.SenderNumber, 4) 
LEFT JOIN dbName1.User C ON A.Username = C.Username
SET B.NotificationFlag = '1'
WHERE B.TextDecoded IS NOT NULL
AND substring(B.SenderNumber,1,1) = '+'
AND B.NotificationFlag = '0'

我在 UPDATE 查询上做错了吗?

非常感谢您的帮助...

4

3 回答 3

0

尝试使用相同的语句,在您的情况下,两个语句的第二行不同:

在 Select 语句中是:

LEFT JOIN dbName2.inbox B ON 

在更新声明中是:

LEFT JOIN dbName2 B ON 
于 2013-03-04T10:17:30.580 回答
0

运行此查询以检查表 B 中连接的真实记录数。

Select distinct B.some_unique_field from dbName2.inbox B
Left Join dbName1.Prospects A ON 
          substring(A.ProspectCellPhone, 2) = substring(B.SenderNumber, 4) OR 
          substring(A.ProspectCellPhone, 3) = substring(B.SenderNumber, 4) OR 
          substring(A.ProspectCellPhone, 4) = substring(B.SenderNumber, 4) 
WHERE B.TextDecoded IS NOT NULL
AND substring(B.SenderNumber,1,1) = '+'
AND B.NotificationFlag = '0';

希望我的查询是正确的:)

于 2013-03-04T10:26:24.143 回答
0

您的选择与 udpate 不匹配,因为您正在对 b 进行更新,所以基本上它会减少到a JOIN b并且选择是a LEFT JOIN b LEFT JOIN C. 此外,A 中的多行可以匹配 B 中的一行,因此您可以获得比 B 中不同的行更多的结果。试试这个:

SELECT DISTINCT b.ID FROM dbName1.Prospects A
JOIN dbName2.inbox B ON 
substring(A.ProspectCellPhone, 2) = substring(B.SenderNumber, 4) OR 
substring(A.ProspectCellPhone, 3) = substring(B.SenderNumber, 4) OR 
substring(A.ProspectCellPhone, 4) = substring(B.SenderNumber, 4) 
WHERE B.TextDecoded IS NOT NULL
AND substring(B.SenderNumber,1,1) = '+'
AND B.NotificationFlag = '0'
于 2013-03-04T10:26:41.477 回答