SQL插入具有一个静态值,一个变量一个的多行

时间:2019-06-07 15:42:49

标签: sql sql-server sql-server-2008

我们有一个具有以下设置的数据库:

SiteSecurityID | SiteID | LoginName
---------------+--------+-----------
Auto Gen #       Number   Username

现在,我们有35个SiteID,每个用户都需要访问每个SiteID。我无法获得任何尝试成功完成此操作的查询。

我可以使用这种方法一个接一个地做,但是必须有一种更简单的方法...

INSERT INTO SiteSecurity (SiteID, LoginName) 
VALUES ('1', 'user1'), ('2', 'user1');

1 个答案:

答案 0 :(得分:1)

假设您有用于网站和用户的表,则可以使用function buttonEnable(){ document.getElementById("Btn").disabled = false;//trying to enabl or disable button with the help of Id } function setData(){ document.getElementById("proxyBtn").disabled = true; let FileData= "<form>"; FileData+= '<td class="hostid-td-padding">'; FileData+= "<input id=\"user\" type=\"text\" value=\""+user+"\" onkeypress=\"buttonEnable()\"></input>"; xmlFileData+= "</td>\n"; FileData+= '<td>'; FileData+= "<input id=\"Btn\" type=\"submit\" value=\"Save\" onclick='update()'></input>\n"; FileData+= "</td>"; FileData+= "</tr>\n"; FileData+= "</form>"; } 生成所有行:

cross join

如果不这样做,您仍然可以即时生成它们。表构造函数因数据库而异,但这提供了方法:

INSERT INTO SiteSecurity (SiteID, LoginName)
    SELECT s.SiteId, u.UserName
    FROM Sites s CROSS JOIN
         users u;

编辑:

如果有现有数据,则可以在插入之前过滤掉重复项:

INSERT INTO SiteSecurity (SiteID, LoginName)
    SELECT s.SiteId, u.UserName
    FROM (VALUES (1), (2), (3), . . . ) s(SiteID) CROSS JOIN
         (VALUES ('user1'),  ('user2'), . . . ) u(UserName);