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

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 に答える
0

同じステートメントを使用してみてください。あなたの場合、2行目は両方のステートメントで異なります。

Selectステートメントでは、次のようになります。

LEFT JOIN dbName2.inbox B ON 

Updateステートメントでは次のようになります。

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 に答える