1

你如何在 Yii2 中编写这个 SQL 查询?

SELECT * FROM table
WHERE column1 IN (SELECT column2 FROM table WHERE column1 = 5)
4

5 回答 5

3

假设您的模型名为YourModel代表表,名称为 name table。然后查询将是:

$subQuery = YourModel::find()->select('column2')->where(['column1' => 5]);
$query = YourModel::find()->where(['column1' => $subQuery]);
$models = $query->all();

之前也问过类似的问题

于 2015-11-10T03:23:34.593 回答
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();

在这种情况下是一样的。我希望我能帮助你

于 2017-03-15T19:20:16.210 回答
0

这是解决您的问题的很多方法。我举一个最正确的例子,就使用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();
于 2017-06-10T22:07:46.817 回答
0
Yii::$app->db->createCommand('SELECT * FROM table
       WHERE column1 IN (SELECT column2 FROM table WHERE column1 = :val)', [':val' => 5])->queryAll();

将返回关联数组,如 ['id' => 1, 'name' => 'Victor']

于 2015-12-09T18:43:56.980 回答
0

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 值。

于 2016-11-15T11:20:40.443 回答