Mysql 如何将innerjoin查询与2个LCASE+1个查询中的替换组合起来?

Mysql 如何将innerjoin查询与2个LCASE+1个查询中的替换组合起来?,mysql,sql,replace,Mysql,Sql,Replace,我尝试使用LCASE进行构建搜索,但不起作用? 这是源查询的一部分,只有这部分有问题错误 AND ((LCASE(SELECT REPLACE (pd.name," ","")) FROM product_description WHERE LCASE (REPLACE (pd.name," ",""))) LIKE '%liondlc10%' OR MATCH(pd.tag) AGAINST('liondlc10') ) O

我尝试使用LCASE进行构建搜索,但不起作用? 这是源查询的一部分,只有这部分有问题错误

AND ((LCASE(SELECT REPLACE (pd.name," ","")) FROM product_description 
WHERE LCASE (REPLACE (pd.name," ",""))) LIKE '%liondlc10%'            
     OR MATCH(pd.tag) AGAINST('liondlc10')           
   )
   OR LCASE((SELECT REPLACE (p.model," ","")) FROM product WHERE LCASE  (REPLACE (p.model," ",""))) = 'liondlc10'
完整查询:

SELECT p.product_id,
      (SELECT AVG(rating) AS total        
         FROM review r1        
        WHERE r1.product_id = p.product_id        
          AND r1.status = '1'
        GROUP BY r1.product_id) AS rating
  FROM product p       
           LEFT JOIN  product_description pd 
                ON (p.product_id = pd.product_id)
           LEFT JOIN product_to_store p2s 
                ON (p.product_id = p2s.product_id)
 WHERE pd.language_id = '1'       
   AND p.status = '1'       
   AND p.date_available <= NOW()       
   AND p2s.store_id = '0'   


   AND ((LCASE(SELECT REPLACE (pd.name," ","")) FROM product_description 
WHERE LCASE (REPLACE (pd.name," ",""))) LIKE '%liondlc10%'            
     OR MATCH(pd.tag) AGAINST('liondlc10')         /* <-- part error */   
   )

   OR LCASE((SELECT REPLACE (p.model," ","")) FROM product 
   WHERE LCASE  (REPLACE (p.model," ",""))) = 'liondlc10'    /* <-- part error */


    OR LCASE(p.sku) = 'liondlc10'       
    OR LCASE(p.upc) = 'liondlc10'       
    OR LCASE(p.ean) = 'liondlc10'       
    OR LCASE(p.jan) = 'liondlc10'       
    OR LCASE(p.isbn) = 'liondlc10'       
    OR LCASE(p.mpn) = 'liondlc10'       
 GROUP BY p.product_id       
 ORDER BY p.sort_order ASC, LCASE(pd.name) ASC
 LIMIT 0, 15
当我尝试这个查询时,mysql说

1064-您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以了解可在“从产品描述中选择替换pd.name”附近使用的正确语法 第16行的LCASE代表在哪里

我可以使用LCASE,但我如何使用以下内容?
需要帮助,已经堆叠了2周:。

谢谢你的建议

它正在工作:

AND (LCASE(REPLACE(pd.name,' ','')) 
    LIKE '%liondlc10%' OR MATCH(pd.tag) AGAINST('liondlc10'))
    OR LCASE(REPLACE(p.model,' ','')) = 'liondlc10'

不要对where子句/联接中的列使用函数。这是非常糟糕的做法。使用函数而不是值。你的方法杀死了数据库performance@dcieslak但是,如果我不在哪里使用,我如何才能使用替换?你能给我举个例子吗?你有从哪里来的产品描述。还好吗?@dcieslak实际上是2个查询。当我尝试联合收割机但失败时,已在产品描述pd中使用left。我认为这样写全文应该没问题。那么为什么不能:和LCASE替换pd.name“”,比如“%liondlc10%”或对“liondlc10”使用MATCHpd.tag