[英]Updating a field of a tablet, after a comparation of value of another table and search if value is present inside a field of a table Hard Job
我在SQL中有2个表,我需要检查表说明中字段说明中的表付款是否包含表发送中存在的代码,如果是,则仅当字段说明中存在代码时才在归档标记上写1,例如,仅在这种情况下第3行的标记应变为1
payment shipping
id description amount number code mark
1 payment dog 10 1 sky 0
2 payment cat 20 2 bed 0
3 payment frog 30 3 dog 1
$sqlupdate= "UPDATE shipping SET shipping.mark = '1' IN ( SELECT description FROM payment WHERE description LIKE '%$code%' )";
$sql = "SELECT number, code, mark FROM shipping WHERE mark = '0'";
$conn->query($sql);
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
$code= $row['code'];
if (mysqli_query($conn, $sqlupdate)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($conn);
}
这不会返回我错误,但不会更新数据库,
我尝试使用其他方法
但我从来没有达到我的目标
您可以在一个查询中执行此操作。 如果您只想将值更新为“ 1”,请使用:
UPDATE shipping s JOIN
descriptions d
ON d.description LIKE CONCAT('%', s.code);
SET s.mark = 1 ;
如果要更新所有值(“ 1”和“ 0”),则:
UPDATE shipping s
SET mark = EXISTS (SELECT 1
FROM descriptions d
WHERE d.description LIKE CONCAT('%', s.code)
);
尝试使用SUBSTRING_INDEX
从描述列获取代码,然后使用wherer条件,如下所示
UPDATE shipping
SET shipping.mark = '1'
where shipping.code IN
( SELECT SUBSTRING_INDEX(description,' ',-1) FROM payment WHERE description LIKE '%$code%' )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.