如果公司包含某个菜单,如何更新SQL

时间:2015-10-16 09:33:44

标签: mysql mysql-workbench

我有一个包含公司列表的数据库。每个公司都可以访问不同的东西。我需要为菜单添加一个新链接,但仅限于某些名为ManifestList的menulink公司:

SELECT * FROM menu where menulink like '%ManifestList.aspx%' ;

此查询返回22条记录。所以我只需要为这22条记录添加新菜单。

我的用于添加新记录的插入语句:

INSERT INTO `menu` 
(`CompanyID`, 
`MenuName`, 
`MenuLink`, 
`ImageLink`, 
`ListOrder`, 
`Popup`, 
`ParentMenuID`, 
`IsActive`, 
`IsAdmin`) 
SELECT Company_ID, 
'Manifest Analysis', 
'reports/ManifestAnalysisReport.aspx', 
'images/icons/grey/Graph.png', 
'15', 
'0', 
'0', 
'1', 
'0'
FROM companies;

但这会为所有公司创建新菜单。如何仅将此菜单添加到包含menulink ManifestList的记录?

2 个答案:

答案 0 :(得分:1)

你为什么不把两者结合起来?

INSERT INTO `menu` 
(`CompanyID`, 
`MenuName`, 
`MenuLink`, 
`ImageLink`, 
`ListOrder`, 
`Popup`, 
`ParentMenuID`, 
`IsActive`, 
`IsAdmin`) 
SELECT Company_ID, 
'Manifest Analysis', 
'reports/ManifestAnalysisReport.aspx', 
'images/icons/grey/Graph.png', 
'15', 
'0', 
'0', 
'1', 
'0'
FROM companies
WHERE menulink LIKE '%ManifestList.aspx%' ;

答案 1 :(得分:0)

我需要加入菜单表以消除错误:错误代码:1054。'where子句'中的未知列'menulink'

我使用了左连接,然后我可以使用menulink

FROM companies c
LEFT JOIN menu m on c.Company_ID = m.CompanyID
WHERE m.menulink LIKE '%ManifestList.aspx%' ;