表:子网和位置
我正在尝试使用更新和选择进行SQL查询。我需要用另一个表中的信息更新一些行,但没有什么可以实际加入这两个表... 我遇到了一些困难。
以下是查询:
UPDATE subnets
SET place = (SELECT locations.id FROM subnets, locations
WHERE LEFT(locations.name,4) LIKE
LEFT (subnets.description,4))
WHERE subnets.network='192.168.1.9';
我想从第一张表中获取第二个表的id,其中包含一个列的常用信息....
如果你不明白,请告诉我。
谢谢
答案 0 :(得分:1)
您可以使用联接
UPDATE subnets
inner join locations on LEFT(locations.name,4) LIKE LEFT (subnets.description,4)
AND subnets.network='192.168.1.9'
SET place = locations.id
答案 1 :(得分:0)
非常感谢你,这很有效! 我现在有另一种情况:
UPDATE subnets dt1, subnets dt2
SET dt1.masterSubnetId = dt2.id
WHERE LEFT(dt2.description,4) LIKE 'OF20' AND dt2.network='0';
我要做的是以下内容: 我有一个带有列id的表子网和一个列masterSubnetId。 我想更新行的masterSubnetId的值以指定另一行的id。
例如,如果我有一行描述名为FRANCE的子网,另一行描述名为PARIS的子网,我希望PARIS将master作为masterSubnetId值的“FRANCE”子网的id。 这两个子网和行在同一个表中,所以我认为我不必加入任何东西......
如果说明字段的前4个字符等于,并且网络值等于0,则两个条件是。
我在创建查询时遇到了麻烦。
如果您想了解更多信息,请随时问我。
感谢您的帮助。
答案 2 :(得分:0)
回答你的第二个问题。 (https://stackoverflow.com/a/44843974/1000756)我没有完全清楚,正如你提到的例子和条件,但也许你可以试试
update subnets as dt1
inner join (
select id from subnets where subnetName = 'FRANCE') as dt2
set dt1.masterSubnetid = dt2.id
where dt1.subnetName = 'PARIS'