你如何在 Yii2 中编写这个 SQL 查询?
SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = 5)
你如何在 Yii2 中编写这个 SQL 查询?
SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = 5)
假设您的模型名为YourModel
代表表,名称为 name table
。然后查询将是:
$subQuery = YourModel::find()->select('column2')->where(['column1' => 5]);
$query = YourModel::find()->where(['column1' => $subQuery]);
$models = $query->all();
之前也问过类似的问题。
你能行的:
$query = 'SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = 5)';
$list = $model::findBySql($query)->all();
或者:
$subquery = $model::find()->select('column1');
$query = $model::find()->where(['not in',$subquery])->all();
在这种情况下是一样的。我希望我能帮助你
这是解决您的问题的很多方法。我举一个最正确的例子,就使用yii2框架而言。
SQL:
SELECT *
FROM table
WHERE
column1 IN
(SELECT column2
FROM table
WHERE column1 = 5)
Yii2 活动记录:
$subQuery = TableModel::find()->select('column2')->where(['column1' => 5]);
$result = TableModel::find()->where(['IN', 'column1', $subQuery])->all();
Yii::$app->db->createCommand('SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = :val)', [':val' => 5])->queryAll();
将返回关联数组,如 ['id' => 1, 'name' => 'Victor']
Yii2 子查询:
$query=YourBaseModel::find()->select('p_id');
$subquery=YourSubMOdel::find()->Where(['in','p_id',$query])->andWhere(['column1'=>1])->one();
$query=>选择 YourBaseModel 中的 p_id值。p_id 值存储在 $query 变量中。然后检查YourSubModel中的 $query 值。