mysql中的filter和join表

btxsgosb  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(312)

我有两个表table1和table2在表1列mobile有多个mobile number条目。我想从表1中获取那些重复的移动电话号码的id,并在表2中搜索表1的id,其中clientid=table1.id。
我尝试了下面的sql代码来获取重复手机号码的id

SELECT id  FROM table1  GROUP BY mobile  HAVING COUNT(*) > 1

然后我尝试将这些值输入一个新数组,其中table1.id=table2.clientid

foreach ($table1data as $key) {
        $items[] = \Yii::$app->db->createCommand("

        SELECT clientId 
        FROM table2  
        WHERE clientId = :cid

        ")
        ->bindValue(':cid',$key['id'])
        ->queryAll();
    }
9fkzdhlc

9fkzdhlc1#

如果 table1 (id) 具有相同的值,则可以使用 INNER JOINEXISTS :

select t2.*
from table2 t2 inner join
     table1 t1
     on t1.id = t2.clientId 
where not exists (select 1 from table1 t11 where t11.mobile = t1.mobile and t11.id <> t.id);

相关问题