mysql使用一个值更新一列,并获得更新行的相关主键

mysql使用一个值更新一列,并获得更新行的相关主键,mysql,Mysql,我正在从命令行使用mysql实用程序。 我想用任何一行中的给定值更新列值。除了更新之外,我还想打印发生更新的行的主键 不确定这是否是一个非常基本的问题,因为我不太习惯数据库 详情如下: 表的创建人: CREATE TABLE `ExpressionPL` ( `idExpressionTag` int(11) NOT NULL, `date` int(11) NOT NULL, `PL` double DEFAULT NULL, `TXN` int(11) DEFAULT NULL,

我正在从命令行使用mysql实用程序。 我想用任何一行中的给定值更新列值。除了更新之外,我还想打印发生更新的行的主键

不确定这是否是一个非常基本的问题,因为我不太习惯数据库

详情如下:

表的创建人:

CREATE TABLE `ExpressionPL` (
 `idExpressionTag` int(11) NOT NULL,
 `date` int(11) NOT NULL,
 `PL` double DEFAULT NULL,
 `TXN` int(11) DEFAULT NULL,
 `Pending` int(11) DEFAULT '0',
 PRIMARY KEY (`idExpressionTag`,`date`)
);
我正在使用以下命令查找符合条件的行并更新值:

update ExpressionPL
SET Pending = 1500
where Pending=0 AND (PL IS NULL OR TXN IS NULL)
ORDER BY date DESC, idExpressionTag DESC LIMIT 1
有没有一种方法可以打印主键(idExpressionTag和date)组合,我刚刚更新了值(1500)

编辑:有多个进程尝试执行相同的操作。因此,我希望确保我只将PKey与特定更新关联

编辑:根据cantelope的建议。我看到下面的是我的工作。我希望这对于多进程环境是安全的(我正在从多个bash脚本启动
mysql-e
命令)


请参见链接“谢谢”。我已经更新了我的问题和可能的解决方案,参考链接。我现在得到了预期的结果。我希望这对于多进程调用是安全的。
SET @update_id := NULL;
SET @update_date := NULL;
update ExpressionPL
SET Pending = 1800, idExpressionTag = (select @update_id := idExpressionTag), date = (select @update_date := date)
where Pending=0 AND (PL IS NULL OR TXN IS NULL) ORDER BY date DESC, idExpressionTag DESC LIMIT 1;
select @update_id, @update_date;