PHP SQL向mysql表中的特定记录添加单词

PHP SQL向mysql表中的特定记录添加单词,php,mysql,sql,Php,Mysql,Sql,我需要在表中的特定字段中添加两个不同的单词 表为: field1, field2 and field3 因此,首先我需要选择要更改的记录: SELECT * FROM MyTable where field3 = 1 假设结果是10条记录 我现在有两个变量var1和var2 我现在需要将var1添加到表的field2的50%,将var2添加到其他50% 我该怎么做 例如: 表: id | field2 | field3 ----------------------------- 1

我需要在表中的特定字段中添加两个不同的单词

表为:

field1, field2 and field3
因此,首先我需要选择要更改的记录:

SELECT * FROM MyTable where field3 = 1
假设结果是10条记录

我现在有两个变量var1和var2

我现在需要将var1添加到表的field2的50%,将var2添加到其他50%

我该怎么做

例如:

表:

  id | field2 | field3
-----------------------------
  1    hello      1
  2    hello2     1
String1 String2

从mytable中选择*字段3=1

将返回2个字段

接下来

在字段2上,将String1插入结果的50%,将String2插入结果的其他50%

输出应为:

  id | field2         |  field3
-----------------------------
  1    String1 hello      1
  2    String2 hello2     1

我不知道这是否适用于mysql,但我建议这样做(ms sql server语法):

或者,如果不希望更新表,而只选择值:

select field1
     , case when ROW_NUMBER() over (order by 1d)%2 = 0
            then 'var1' + field2
            else 'var2' + field2
       end as field2
     , field3
 where field3 = 1
它将“var1”添加到偶数行,将“var2”添加到奇数行。用变量替换“var1”和“var2”


它的工作原理是取每个行号的模2,从而查看结果集的行号是偶数还是奇数。然后,它根据行数是偶数还是奇数放入var1或var2。

获取要更新的计数行

select count(*) cnt 
from MyTable 
where field3 = 1;
并在php中将结果存储到变量$cnt中,同时计算范围之间的中间点

$middle = ceil($cnt/2);
然后运行以下查询(当然不要忘记转义sql中传递的变量的值):

示例如下:

<?php

$conn = mysqli_connect('localhost', 'user', 'pass', 'dbtest');
$rs = mysqli_query($conn, "select count(*) cnt from MyTable where field3 = 1");
$row = mysqli_fetch_assoc($rs);
$cnt = $row['cnt'];
$middle = ceil($cnt/2);
$var1 = 'xxx';
$var2 = 'yyy';
mysqli_query(
    $conn, 
    "update MyTable a,
           (SELECT @rownum:=0) b
     set field2 = concat(field2, if((@rownum := @rownum+1) > $middle, '$var1', '$var2'))     
     where field3 = 1
    "
); 

是否要将field2值拆分为两个变量的50%?只需将var1的内容插入结果的一半,将var2的内容插入另一半即可。字段2的…不替换,只需添加到字段2即可。。您能提供一个示例数据集,并解释它应该如何更新的逻辑吗?表单有字段。表有行和列。一旦你处理了这个问题,考虑提供适当的DDL和/或SQL LFIDLE连同期望的结果。你的意思是你想在Vield2中有5个VAR1行,在字段2中有5个VAR2行吗?得到一个错误:$RESULT = MyQuiLQuy查询($CON,“从MyTabe选择字段(1))的“选择计数(*)CNT”);中间=中欧(cnt/2);——错误是:未定义变量:cntExample已添加到答案中。尝试了您的示例…未获得错误,但表未更改
update MyTable a,
      (SELECT @rownum:=0) b
set field2 = concat(field2, if((@rownum := @rownum+1) > $middle, '$var1', '$var2'))     
where field3 = 1;
<?php

$conn = mysqli_connect('localhost', 'user', 'pass', 'dbtest');
$rs = mysqli_query($conn, "select count(*) cnt from MyTable where field3 = 1");
$row = mysqli_fetch_assoc($rs);
$cnt = $row['cnt'];
$middle = ceil($cnt/2);
$var1 = 'xxx';
$var2 = 'yyy';
mysqli_query(
    $conn, 
    "update MyTable a,
           (SELECT @rownum:=0) b
     set field2 = concat(field2, if((@rownum := @rownum+1) > $middle, '$var1', '$var2'))     
     where field3 = 1
    "
);