在子查询中续集“WHERE”子句

Posted

技术标签:

【中文标题】在子查询中续集“WHERE”子句【英文标题】:Sequelize "WHERE" Clause in subqueries 【发布时间】:2018-12-13 15:13:43 【问题描述】:

我正在尝试使用 sequelize 构建我的查询,在 where 子句中我需要从我的前端给出条件值,所以我这样做了:

getResults(req) 
            return parm
                .findAll(
                    attributes: [
                        sequelize.literal('DISTINCT "id"')
                    ],
                    where :  
                        name: req.query.parm.replace(/"/g, '').split(',')
                     ,            
                    raw: true
                );

        

它正在工作! 但现在我需要编写一个包含 where 子句的子查询: 像这样:

SELECT tab1.name FROM
(SELECT name FROM "MYTABLE"
WHERE id = (value from the front-end) AND name IN (values from front-end)
) as tab1

这是我尝试过的:

    getTest(req)  
if (req.query.parm != null) 
 return parm .sequelize.query('SELECT id FROM "table_base" where id = $mid ); ',
  type: sequelize.QueryTypes.SELECT , 
   bind:  mid: [req.query.parm.replace(/"/g, '').split(',')]  ); 
 
,

我尝试使用原始查询并测试了绑定参数,但是当我执行此测试查询时出现此错误:

Executing (default): SELECT id FROM "table_base" where id = $1 ); 

【问题讨论】:

【参考方案1】:

您的问题的答案是肯定的,这确实是可能的!即使您使用的是 sequelize,SQL 也几乎可以做任何事情。如果您编写子查询但它不起作用,只需将其发布回此处,以便人们查看和调试。谢谢

【讨论】:

我尝试使用原始查询并测试了绑定参数,但是当我执行此测试查询时出现此错误:执行(默认):SELECT id FROM "table_base" where id = $1); getTest(req) if (req.query.parm != null) return parm .sequelize.query('SELECT id FROM "table_base" where id = $mid ); ', type: sequelize.QueryTypes.SELECT , bind: mid: [req.query.parm.replace(/"/g, '').split(',')] ); ,跨度> 嘿,你能把你的 SQL 脚本添加到问题中,就像我尝试过的一样:)

以上是关于在子查询中续集“WHERE”子句的主要内容,如果未能解决你的问题,请参考以下文章

在子数组上使用“where”和“in”时出现续集错误

CodeIgniter 活动记录在子查询中的位置

在子查询中使用内联函数(在 WHERE 子句中)

Laravel Eloquent 在子查询中有两个“WHERE NOT IN”

在子查询中为数据透视列的值实现 WHERE 子句?

如何在子查询的 WHERE 子句中使用来自 UNNEST 的多个值?