我在数据库中有一个名为Menu的表。以下是此表中的字段:
`ID`,
`CompanyID`,
`MenuName`,
`MenuLink`,
`ImageLink`,
`ListOrder`,
`Popup`,
`Target`,
`ParentMenuID`,
`IsActive`,
`IsAdmin`
从第一张图片中可以看出,MenuName包含所有不同菜单的列表。
这有点复杂,所以我希望我能解释这一点。查看CompanyID等于99的行。在第二个图像中,ID等于1807.
现在在第三张图片中,当CompanyID也等于99时,看看ParentMenuID是如何设置为1807的。所以当MenuName = Public Holidays时,我需要设置字段ParentMenuID。当MenuName = Lookups时,我从ID中获取此值。 所以我的问题是如何在MenuName = Publicup时将所有ParentMenuID字段设置为与MenuName = Lookups时的ID字段匹配。
您可以看到第三个图像是否其他ParentMenuID字段等于1.我在此表中有近100行,并且无法一次更新所有这些行。是否有可以帮助的SQL查询?
答案 0 :(得分:1)
因此,您要更新MenuName为“公共假期”的所有行,并将ParentMenuID设置为MenuName为“Lookups”且相同CompanyID的行的ID?试试这个问题:
UPDATE Menu p
INNER JOIN Menu l ON (l.CompanyID = p.CompanyID)
SET p.ParentMenuID = l.ID
WHERE p.MenuName = 'Public Holidays' -- Fixed Spelling
AND l.MenuName = 'Lookups'
我在这里有点猜测,我建议你先备份你的数据,或先在一小部分上测试一下,看看它是否真的按照你想要的方式运行。