2013-12-16 64 views
-2

我知道這個問題已經相當多餘了,但在我的情況下,我無法弄清楚我的代碼出錯或可能與我的數據表。子查詢返回多個值。這是不允許的,當子查詢遵循=,!=,<, <= , >,> =

我使用MS SQL 2005中運行以下命令:

我做
Select * 
from table 
where [Scheduled Date] between '2013-07-01' and getdate() 
Order by [Scheduled Date] asc 

兩件事情,原來罰款當我運行它:

  1. 我改變getdate()成類似'2013-09-01'但我不認爲問題出在功能getdate()

我總是得到:

子查詢返回多個值。當 子查詢遵循=,!=,<,< =,>,> =或當子查詢用作 表達式時,這是不允許的。

  1. 我試着選擇每一列。首先選擇col_1(成功),新增col_2(成功),加起來爲col_9(成功),但是當我試圖添加col_10時失敗。我共有13列。

sp_help將

enter image description here

+0

getdate()返回你的日期和時間,所以更好'鑄(getdate()作爲日期)'爲什麼標籤'mysql' –

+0

這對我來說工作正常。您的問題不在於該查詢。 –

+0

問題是你的主要查詢,你可以請帖嗎?發生的事情是你的子查詢返回多個結果,並且你很可能將這個結果與某個任意值進行比較,如果返回結果只有一條記錄,那麼這個結果很有用,只要它有一個以上的記錄失敗。 – JanR

回答

2

您在查詢中使用了一個視圖。

enter image description here

,但是當我試圖添加col_10失敗。

col_10在您的視圖是一個子查詢返回多個行。

+0

嗨Mikael。那麼我該怎麼做呢? – DetectiveDrone

+0

@DetectiveDrone你需要修復視圖,否則你應該停止使用它。也許直接使用基表。 –

-1

我覺得你上面的查詢是一些主要查詢的一部分。

同樣在'2013-07-01'和getdate()之間 - 只返回行,所以你不能識別錯誤。

'2013-07-01'和'2013-09-01'之間 - 此返回許多行暴露您的SQL。

所以你的查詢是錯誤的。

-1

這是因爲where子句中的任何內容都必須是邏輯表達式。 Getdate()不是一個邏輯表達式。試試這個......

Select * from table 
where [Scheduled Date] >= '2013-07-01' and [Scheduled Date] <= getdate() 
Order by [Scheduled Date] asc 
相關問題