如何在Yii2中编写此SQL查询?
SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = 5)
答案 0 :(得分:3)
假设您的模型名为YourModel
,表示名称为table
的表。然后查询将是:
$subQuery = YourModel::find()->select('column2')->where(['column1' => 5]);
$query = YourModel::find()->where(['column1' => $subQuery]);
$models = $query->all();
之前还问过similar question。
答案 1 :(得分:0)
Yii::$app->db->createCommand('SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = :val)', [':val' => 5])->queryAll();
将返回关联数组,例如[' id' => 1,' name' => '维克多']
答案 2 :(得分:0)
Yii2 SubQuery:
$(document).ready(function(){
$('tr').each(function(){
var _this = this;
$(this).find('input#updateBox').on("click", function() {
var customerId = $(_this).find('td:eq(1)').text();
$('#texti').text(customerId);
});
});
});
$ query =>选择 YourBaseModel 中的p_id值。 p_id值存储在$ query变量中。然后检查 YourSubModel 中的$ query值。
答案 3 :(得分:0)
你可以这样做:
$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();
在这种情况下它是一样的。 我希望我帮助你
答案 4 :(得分:0)
这有很多方法可以解决您的问题。 在使用yii2框架方面,我将给出一个最正确的例子。
SQL:
SELECT *
FROM table
WHERE
column1 IN
(SELECT column2
FROM table
WHERE column1 = 5)
Yii2 activerecord:
$subQuery = TableModel::find()->select('column2')->where(['column1' => 5]);
$result = TableModel::find()->where(['IN', 'column1', $subQuery])->all();