Итак, в основном я хочу сделать файл, который внесет некоторые изменения в мою базу данных. Я должен ввести некоторые данные, но чтобы быть быстрее, я хочу использовать оператор sql IN. Так что я хочу выглядеть примерно так:
$this->update('basicInfo', array('regionId' => 1),
'WHERE countyId IN (SELECT id FROM countyTable WHERE regionId = 1 )')
regionId должен быть установлен в 1, когда countyId равен 3,6,7,9,4 и так далее
Я знаю, что это не сработает, но я не знаю, как заставить его работать, и можно ли заставить его работать.
См. CDbCommand, где doc функции для получения дополнительной информации о том, как использовать sql 'в' критериях.
Я бы сделал это так:
// retrieve county ids for regionId = 1
$dbConn = $this->getDbConnection();
$countyTableIds = $dbConn->createCommand()
->select('id')
->from('countyTable')
->where('regionId = 1')
->queryAll();
// prepare condition as array.
$condition = array('in', 'countyId', $countyTableIds);
// update
$this->update('basicInfo', array('regionId' => 1), $condition);
Используйте предложение ANY
UPDATE mytable
SET status = 'inactive'
WHERE countyId = ANY (SELECT id FROM countyTable WHERE regionId = 1 )