根据另一个表

时间:2016-09-15 11:02:42

标签: mysql transactions

START TRANSACTION;
SELECT @v:=Clientno FROM A WHERE Case_No = '2000'; 
IF @V = ' ' THEN 
   UPDATE B SET Status = 'Ongoing' WHERE C_No = '3000';
COMMIT;

在上面的MySQL TRANSACTION语句中,我想从@v和if table A获取@v EXISTS(即如果{的值为/ {} {1}})然后我想将Case_No = '2000'中的一行从table B更新为'Status'

上面的语法不起作用。

执行上述'Ongoing'工作的正确MySQL语法是什么?

表格结构如下:

  

表A的结构:A(Case_No,Clientno)

     

表B的结构:B(C_No,Status)

2 个答案:

答案 0 :(得分:0)

你的问题不是很清楚。

猜测tableB.C_no是tableA.ClientNo

的引用
update
    tableB
set Status = 'Ongoing'
where C_No = ( select Clientno from tableA where Case_No = 2000 )

如果它不是参考表,那么尝试

update
    tableB
set Status = 'Ongoing'
where C_No = 3000
and ( select count(Clientno) from tableA where Case_No = 2000) > 0

答案 1 :(得分:0)

注意:您的问题不够明确。我根据对问题的理解来回答这个问题

您还可以使用内部联接更新。例如:

update b inner join a on A.Case_No = B.C_No set status='on_going' where A.Case_No = 2000 and B.C_No = 3000;

此查询将仅选择AB中包含条目的行。因此,您不必担心A是否有该行。