【问题标题】:Like is not working as expected in update query of join conditionLike 在连接条件的更新查询中没有按预期工作
【发布时间】:2019-01-04 04:22:07
【问题描述】:

代码:

UPDATE elections_ls_2014_stats e
      JOIN `pc-details` p
      ON ( e.name LIKE CONCAT('%' ,p.candidate_name ,'%') )
SET    e.pc_details_id = p.id  WHERE  p.year =  '2014'
AND p.`candidate_results_position` ='1' AND e.pc_details_id IS NULL

这里它没有按预期工作 例如:Pandula Ravindra Babu 博士和 Pandula Ravindra Babu 博士

这是此条件未按预期工作的情况之一,意味着更新查询不工作。

但在选择语句中,我得到了上述情况的结果。(Pandula Ravindra Babu 博士和 Pandula Ravindra Babu)

代码:

SELECT pd.id AS pc_details_id, el.id AS election_2014_id, pd.candidate_name, el.name
FROM  `pc-details` pd,  `elections_ls_2014_stats` el
WHERE pd.`year` LIKE  '2014'
AND pd.`candidate_results_position` =1
AND pd.candidate_name LIKE CONCAT(  '%', el.name,  '%' ) 

我在更新查询中做错了什么吗?

任何建议将不胜感激。谢谢你

【问题讨论】:

    标签: php mysql sql-update sql-like


    【解决方案1】:

    在您的UPDATE 查询中,LIKE 表达式与您在SELECT 查询中的方式相反。试试这个:

    UPDATE elections_ls_2014_stats e
          JOIN `pc-details` p
          ON p.candidate_name LIKE CONCAT('%', e.name,  '%') 
    SET    e.pc_details_id = p.id  WHERE  p.year =  '2014'
    AND p.`candidate_results_position` ='1' AND e.pc_details_id IS NULL
    

    【讨论】:

    • 是的,它对我有用,但为什么你要交替使用类似的条件。你能解释一下吗?
    • @sradha 我刚刚将它与您在SELECT 查询中的那个相同,您说它有效。
    • 好的。。谢谢你
    【解决方案2】:

    你可以试试下面 -

      UPDATE elections_ls_2014_stats e
              JOIN `pc-details` p
        SET    e.pc_details_id = p.id  
        WHERE  p.year =  '2014'
        AND p.`candidate_results_position` ='1' AND e.pc_details_id IS NULL and  e.name LIKE CONCAT('%' ,p.candidate_name ,'%') 
    

    【讨论】:

    • 不,它不适合我 :( ,结果与 prevoius 相同
    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 1970-01-01
    • 1970-01-01
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多