Mysql 如何使用SQL::Abstract生成SQL查询?

Mysql 如何使用SQL::Abstract生成SQL查询?,mysql,perl,sql-generation,Mysql,Perl,Sql Generation,如何使用以下命令为该查询生成WHERE子句: 从id所在的表中选择计数(*)= 111并且在_集合中找不到_(类型, “1,2,3,4”)和状态=“待定” 如何正确地包含条件,例如WHERE FIND_IN_SET(键入'1,2,3,4')?FIND_IN_SET不是标准的SQL,因此SQL::Abstract不支持它。但是,您可以将任何内容放入SQL::抽象查询中。我希望您的解决方案就是这样。此代码生成WHERE子句: my $sql = SQL::Abstract->new;

如何使用以下命令为该查询生成
WHERE
子句:

从id所在的表中选择计数(*)= 111并且在_集合中找不到_(类型, “1,2,3,4”)和状态=“待定”


如何正确地包含条件,例如
WHERE FIND_IN_SET(键入'1,2,3,4')

FIND_IN_SET不是标准的SQL,因此SQL::Abstract不支持它。但是,您可以将任何内容放入SQL::抽象查询中。我希望您的解决方案就是这样。

此代码生成
WHERE
子句:

my $sql = SQL::Abstract->new;    

my %where = (
    id => 111,
    -nest => \"NOT FIND_IN_SET(type, '1,2,3,4')",
    status => 'pending',
);

my ($stmt, @bind) = $sql->where(\%where, \@order);
请参见一元运算符选项:

use SQL::Abstract;

my $sql = SQL::Abstract->new;

my $where = {
    id => 111,
    status => 'pending',
    -not_bool => "FIND_IN_SET(type, '1,2,3,4')",
};

my ($query, @bind) = $sql->select( 
    'table',
    'count(*)',
    $where,
);
这就是
$query
的外观:

SELECT count(*) FROM table WHERE ( ( (NOT FIND_IN_SET(type, '1,2,3,4')) 
AND id = ? AND status = ? ) )
看看:DALMP

使用PHP的MySQL数据库抽象层

0%脂肪,非常容易使用。仅在需要时连接到数据库


我在SQL::Abstract中找不到任何关于-nest的文档。你怎么知道用这个?