繁体   English   中英

如何在存储在其他表MySQL中的查询中应用where条件

[英]How to apply where condition in query which is stored in other table MySQL

我有要求我将在哪里获取存储在其他表中的条件,例如id > 10amount < 100

我正在使用存储过程来执行某些任务,在该任务中检索此where条件并将其用于将一些数据插入表中。 但这可能不起作用,可能是因为在前端和结尾附加了撇号。

set @whereC = (select FilterCondition from SearchLeads where `SearchLeadID` = sid);
INSERT INTO `JTemporary` 
        (`ZipID`,`FirstName`,`LastName`,`MemberSince`,
        `Address1`,`Phone`,`Email`,`CompanyName`,
        `BusPhone`,`Deleted`,`CreatedBy`,`CreateDate`,
        `UpdatedBy`,`UpdateDate`)
  select `ZipCode`,`FirstName`,`LastName`,`AddDate`,
        `AddressLine1`,`HomePhone`,`HomeEmail`,`Employer`,
        `BusinessPhone`,'N',loginUserID,now(),
        loginUserID,now() 
    from membertrans where @whereC;

这不起作用。 当我通过复制该条件并代替变量来直接应用时,它可以工作,但对变量不起作用。

如何实现呢?

这是在我的mysql数据库上工作的示例。

CREATE DEFINER=`root`@`localhost` PROCEDURE `test`(whereClause varchar(512))
BEGIN
SET @str = concat('SELECT * from mytable where ',whereClause);
PREPARE myquery FROM @str;
EXECUTE myquery;
END

我可以在任何我喜欢的where子句中调用上述内容,例如

call test ('col1 between 5 and 10 and col2=''a bit of text''')

显然这里的关键是SET / PREPARE / EXECUTE,这是您需要做的。

我用了这个问题,可以在MySQL中执行字符串吗? 由于我自己的所有示例都在SQL Server中进行,因此可以得出上述内容。

您没有将任何列放在条件与选择查询列FilterCondition匹配的位置。 例如。

set @whereC = (select FilterCondition from SearchLeads where `SearchLeadID` = sid);
INSERT INTO `JTemporary` 
        (`ZipID`,`FirstName`,`LastName`,`MemberSince`,
        `Address1`,`Phone`,`Email`,`CompanyName`,
        `BusPhone`,`Deleted`,`CreatedBy`,`CreateDate`,
        `UpdatedBy`,`UpdateDate`)
  select `ZipCode`,`FirstName`,`LastName`,`AddDate`,
        `AddressLine1`,`HomePhone`,`HomeEmail`,`Employer`,
        `BusinessPhone`,'N',loginUserID,now(),
        loginUserID,now() 
    from membertrans where **filterColumn ** IN (or any other clause) @whereC;

我认为这是问题所在,尝试此操作可能会对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM