2015-03-03 112 views
0

我想知道什麼是錯誤的聲明。SQL選擇插入選擇Stement

INSERT INTO Table1(Myname,category) 
SELECT TOP 1 thenames 
FROM tNames 
WHERE DateAdded > DATEADD(Day, -10, GETDATE() 
ORDER BY NEWID(),@ccategory) 

我想從表tnames中選擇一個隨機值,並將其放在表1中,並將其從SP獲得類別值。 我該怎麼做?

EDITS: 我正在MS SQL Server中工作。 完整代碼:

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。由於表1有2列(第一個是類別),我想從tname表中獲取第二個(myname)列值作爲隨機值(已在10天內添加的名稱)。

+4

MySQL或Sql-Server?這是兩件不同的事情。 – Jens 2015-03-03 07:58:33

+4

哪個dbms'sql server'或'mysql'? – 2015-03-03 07:58:40

+0

謝謝你提到它。我剛剛編輯了這個問題。 – 2015-03-03 09:02:08

回答

2

您有2列要插入(的Myname,類別) 但你的選擇列表中只包含1列! (thenames)

「@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() 
1

您的選擇會從Select語句一列有在INSERT語句

INSERT INTO Table1(Myname) 
SELECT TOP 1 thenames 
FROM tNames 
WHERE DateAdded > DATEADD(Day, -10, GETDATE() 
ORDER BY NEWID(),@ccategory) 
1

指定的兩列必須選擇這是寫在INSERT語句中的精確值。財產以後這樣的: -

INSERT INTO Table1(Myname,category) 
SELECT TOP 1 thenames, Category_value 
FROM tNames 
WHERE DateAdded > DATEADD(Day, -10, GETDATE()) 
ORDER BY NEWID(),@ccategory 
1
INSERT INTO Table1(Myname,category) 
SELECT TOP 1 thenames,@ccategory 
FROM tNames 
WHERE DateAdded > DATEADD(Day, -10, GETDATE() ORDER BY NEWID(),@ccategory) 

你應該通過insert和select語句

的參數相同combinataion