У меня есть две таблицы Table1 и Table2. В таблице 1 столбец mobile имеет несколько записей мобильного номера. Я хочу получить идентификатор повторяющегося мобильного номера из таблицы1 и найти идентификаторы таблицы1 в таблице2, где clientId = table1.id.
Я попробовал приведенный ниже код SQL для получения идентификатора повторяющегося мобильного номера
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();
}
Если table1 (id)
имеет одинаковое значение, вы можете использовать INNER JOIN
с EXISTS
:
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);