我有兩個表:多個表選擇,子查詢返回多個值。 SQL
員工
id | fullName | birth | speciality
1 | A A A | 01/01/1980 | Manager
2 | B B B | 01/01/1980 | Developer
3 | C C C | 01/01/1980 | User
EmployeesStatus
ID | status | dateChange
1 | 1 | 01/01/2010
2 | 1 | 01/01/2013
3 | 1 | 01/01/2015
3 | 2 | 01/01/2016
,我想seletect以下數據
ID | Full name | Bith date | speciality | Date hired | Date fired
結果必須是:
ID | Full name | Bith date | speciality | Date hired | Date fired
1 | A A A | 01/01/1980 | Manager | 01/01/2010 | null
2 | B B B | 01/01/1980 | Developer | 01/01/2013 | null
3 | C C C | 01/01/1980 | User | 01/01/2015 | 01/01/2016
3 | C C C |01/01/1980 | User | 01/01/2017 | null
我的代碼:
SELECT Employees.id , Employees.fullName, Employees.birth, Employees.speciality,
(SELECT dateChange FROM EmployeesStatus WHERE status=1 AND id=Employees.id) datehired,
(SELECT dateChange FROM EmployeesStatus WHERE status=2 AND id=Employees.id) datefired FROM Employees
HASE作爲導致以下消息:
消息512,級別16,狀態1,行1子查詢返回多個1個 值。這是當子查詢跟隨不允許=,!=,<,< =,
,> =,或當子查詢用作表達。
有什麼想法?
那麼,如果返回多於1行,希望發生什麼?你只想要其中之一嗎?或者跳過子查詢,如果需要所有行,請執行左連接。 – jarlh
我相信這個錯誤信息是不言自明的。當任何一個子查詢返回多個記錄時,您將收到此錯誤。你可以添加'LIMIT'來限制子查詢返回一條記錄,或者爲你的子查詢添加適當的過濾條件。 –
我也建議不要在你的select語句中執行子查詢,它們通常性能很差。如果可以的話,嘗試將它們移入適當的連接。 –