簡體   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