SQL Select In Select for insert 语句
SQL Select In Select for insert Stement
我想知道该声明有什么问题。
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
我想从 table tnames 中选择一个随机值并将其放入 table 1 中,其中包含我从 SP 获得的类别值。
我应该怎么做?
编辑:
我在 MS SQL 服务器上工作。
完整代码:
Create PROCEDURE [dbo].[Names_SP]
@CCategory nvarchar(50)
AS
BEGIN
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
END
当我打电话给 SP 时,我会发送@ccategory。由于 table 1 有 2 列(第一列是类别),我想从 tname table 中随机获取第二列(myname)列值(在 10 天内添加的名称)。
您正在从 Select 语句中选择一列,并且在插入语句中指定了两列
INSERT INTO Table1(Myname)
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
您必须 select 插入语句中写入的确切值。像这样:-
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames, Category_value
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE())
ORDER BY NEWID(),@ccategory
您有 2 列要插入(我的名字,类别)
但是您的 select 列表只包含 1 列! (名字)
“@category”呢?至少在您发布的代码中,此变量从未声明或分配...
也许你应该这样做:
DECLARE @category varchar(20)
SET @category = 'some cat.'
INSERT INTO Table1(Myname,category)
SELECT TOP 1 thenames,@category
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE())
ORDER BY NEWID()
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames,@ccategory
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE() ORDER BY NEWID(),@ccategory)
您应该传递插入和 select 语句的相同参数组合
我想知道该声明有什么问题。
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
我想从 table tnames 中选择一个随机值并将其放入 table 1 中,其中包含我从 SP 获得的类别值。 我应该怎么做?
编辑: 我在 MS SQL 服务器上工作。 完整代码:
Create PROCEDURE [dbo].[Names_SP]
@CCategory nvarchar(50)
AS
BEGIN
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
END
当我打电话给 SP 时,我会发送@ccategory。由于 table 1 有 2 列(第一列是类别),我想从 tname table 中随机获取第二列(myname)列值(在 10 天内添加的名称)。
您正在从 Select 语句中选择一列,并且在插入语句中指定了两列
INSERT INTO Table1(Myname)
SELECT TOP 1 thenames
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE()
ORDER BY NEWID(),@ccategory)
您必须 select 插入语句中写入的确切值。像这样:-
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames, Category_value
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE())
ORDER BY NEWID(),@ccategory
您有 2 列要插入(我的名字,类别) 但是您的 select 列表只包含 1 列! (名字)
“@category”呢?至少在您发布的代码中,此变量从未声明或分配...
也许你应该这样做:
DECLARE @category varchar(20)
SET @category = 'some cat.'
INSERT INTO Table1(Myname,category)
SELECT TOP 1 thenames,@category
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE())
ORDER BY NEWID()
INSERT INTO Table1(Myname,category )
SELECT TOP 1 thenames,@ccategory
FROM tNames
WHERE DateAdded > DATEADD(Day, -10, GETDATE() ORDER BY NEWID(),@ccategory)
您应该传递插入和 select 语句的相同参数组合