2017-08-22 8 views
0
SELECT id,login,contact_number, store_id, COUNT(contact_number) AS COUNT 
    FROM USER 
    WHERE store_id = 1 
    AND is_number_verified = 1 
    GROUP BY contact_number 
HAVING COUNT(contact_number) > 1 

ここで、number_verifiedの値をすべて0に更新し、すべてのユーザーに対して を1行確認したいとします。私はこれを試してみましたが、あなたは、このように、別の内部クエリを試みることができる複数の値を更新する

UPDATE `user` SET is_number_verified = 0 
WHERE id IN 
( 
SELECT id 
    FROM USER where store_id = 1 
    AND is_number_verified = 1 
    GROUP BY contact_number 
HAVING COUNT(contact_number) > 1 
) 
+0

まず、あなたが適切に 'グループby'を使用する方法を学ぶ必要があります。ある列でグループ化することはできず、別の列を選択することはできません。まず、sql_mode "only_full_group_by"を有効にします。 – fancyPants

答えて

0

作業イマイチ:

UPDATE `user` SET is_number_verified = 0 
WHERE id IN 
(SELECT temp.id FROM (  
SELECT id,login,contact_number, store_id, COUNT(contact_number) AS COUNT 
FROM USER 
WHERE store_id = 1 AND is_number_verified = 1 
GROUP BY contact_number 
HAVING COUNT(contact_number) > 1) AS temp) 
関連する問題