【问题标题】:How to update table columns that are stored as rows?如何更新存储为行的表列?
【发布时间】:2021-09-21 02:02:54
【问题描述】:

我第一次尝试更新 wordpress 数据库中的插件数据。我正在使用 Advanced CF7 DB 插件来存储联系表格 7 数据。对于更新列,我不知道是否需要枢轴或有任何其他方法来实现这一点。已搜索但使用数据透视找到两个表。我想更新同一个表中的数据,只是列在行中。不知道该怎么做。数据以以下格式存储:

  | id | cf7_id | data_id | name            | value       
  +----+--------+---------+-----------------+------------------
  |  9 |   4561 |       2 | uid             | 60eabb2c20021    
  | 10 |   4561 |       2 | emailId         | axxxxx@gmail.com 
  | 11 |   4561 |       2 | clicked_on_link | No               
  | 12 |   4561 |       2 | orderNos        | Miscommunication 
  | 13 |   4561 |       2 | submission_id   | 177              
  +----+--------+---------+-----------------+------------------

我想更新列 clicked_on_link= Yes where uid= 60eabb2c20021。 uid 将从 url 参数传递。

 | 11 |   4561 |       2 | clicked_on_link | Yes      

我想要这个 php-sql 形式的查询,以便我可以将它包含在代码中。我尝试了以下查询,我知道这是错误的,但至少尝试过:

update wp_cf7_vdata_entry as b1,
(select data_id,MAX(CASE WHEN name='uid' THEN value ELSE NULL END) AS 
uid,
MAX(CASE WHEN name='email_id' THEN value ELSE NULL END) AS email_id,
MAX(CASE WHEN name='clicked_on_link' THEN value ELSE NULL END) AS 
clicked_on_link 
from wp_cf7_vdata_entry group by data_id) as b2 
set b2.clicked_on_link='Yes'
where b1.data_id=b2.data_id 
and b2.uid=60ea1e95190ee;

【问题讨论】:

  • 请提供。 问题中的样本数据和期望结果。
  • @GordonLinoff 你能帮我解决这个问题吗?我真的被困住了。

标签: php sql wordpress


【解决方案1】:

你可以使用join:

update wp_cf7_vdata_entry e join
       wp_cf7_vdata_entry e2
       on e.data_id = e2.data_id
    set e2.value = 'yes'
    where e.name = 'uid' and e.value = '60eabb2c20021' and
          e2.name = 'clicked_on_link';

注意:我不确定cf7_id 是否与连接条件相关,但您的代码仅使用data_id

【讨论】:

    猜你喜欢
    • 2020-11-16
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 2011-10-07
    • 2020-05-02
    • 2021-12-15
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多