我有三张桌子如下
表1
Id Name
1 abcd
2 bcd
3 dabc
表2
Id2 Name2
2 xyz
3 def
4 mno
表3
Id Id2 Value
1 4 1
2 3 1
3 4 1
现在,
从表1中:我必须选择名称为%abc%的所有Id
从表2中:我必须选择Id2,其中Name2是“mno”
从表3:我必须将值从1更改为0,其中Id的值来自表1,Id2来自表2。
表1:
select Id from Table1 where Name like '%abc%'
表2:
select Id2 from Table2 where Name2 = "mno"
表3:
update Table3 set Value = 0 where Id in() and Id2=
但是,我不知道如何使它成为一个单一的查询。有人能带我上去吗?
最佳答案
参考:prior stack article
你还没有解释T1与T2的关系,所以我假设是交叉连接。
当T1中的数据中有一个名为'%abc%'(1,3)的记录时。。
当T2中有一个名为'mno'4的记录时,您希望表3中的值为0
所以我们产生的选择应该产生
1,4个
3,4个
当我们把它内部连接回表3时,它只选择
Id Id2 Value
1 4 1
3 4 1
现在,我们生成一个更新基于这个选择,概述在上述链接。。。
UPDATE table3
INNER JOIN (
SSELECT t1.ID t1ID, t2.id t2ID
FROM table1 t1
CROSS JOIN table2
WHERE t1.name like '%abc%'
and t2.name like = 'mno') B
on B.t1ID = t3.Id
and B.t2ID = T3.ID2
SET value = 0
给我们一个结果
Id Id2 Value
1 4 0
2 3 1
3 4 0
if we select * from table3
关于mysql - 在1中混合3个SQL查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34778467/