① sql 觸發器 子查詢返回的不止一個值
當然有問題,你設的參數只能取到一個值,所以如果你插入一行就沒有問題,超過一行就不對。
ALTER TRIGGER 班級表人數添加
ON dbo.學生信息表
FOR insert
AS
begin
update a set a.人數=b.人數
from 班級表 a,(select 班級編號,count(*) 人數 from inserted group by 班級編號) b
where a.班級編號=b.班級編號
end
② sql 問題子查詢返回的值不止一個。
解決方法如下:
返回一個值:返回多個說明資料庫中滿足用戶查詢條件的記錄有多個,要返回一個就說明用戶的查詢條件不夠,再加條件控制就行了,比如在語句末尾再加 and ***=『***』;
如果用戶問的是如何在後台程序中接收的話,用List可以,一個節點接收Result的一行值,讀取的時候遍歷List就行了。
(2)sql子程序返回值不止一個擴展閱讀:
刪除表
drop table tabname--這是將表連同表中信息一起刪除但是日誌文件中會有記錄
刪除信息
delete from table_name-這是將表中信息刪除但是會保留這個表
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
③ SQL SERVER 子查詢返回的值不止一個。
IF((SELECT top 1 shippedDate FROM inserted) > RequiredDate))
④ SQL問題,子查詢返回的值不止一個!
執行後報下面的錯誤,是哪裡出錯了?幫看下,謝謝.
"消息 512,級別 16,狀態 1,第 1 行
子查詢返回的值不止一個。當子查詢跟隨在 =、!=、<、<=、>、>= 之後,或子查詢用作表達式時,這種情況是不允許的。
"
⑤ sql server觸發器 子查詢返回值不止一個 如何解決
你說的是
SELECT ...... FROM inserted; 返回多行的情況么?
--假設這個A是主表
CREATE TABLE A(
AID INT IDENTITY(1, 1) PRIMARY KEY,
money INT
);
-- 假設這個B是 日誌表, 負責記錄 A表 發生的變化。
CREATE TABLE B(
BID INT IDENTITY(1, 1) PRIMARY KEY,
AID INT,
money INT
);
go
-- 假設這個C也是日誌表, 負責記錄 A表 發生的變化。
-- 但是這個C表是用於演示 不正確使用的例子。
CREATE TABLE C(
CID INT IDENTITY(1, 1) PRIMARY KEY,
AID INT,
money INT
);
go
-- 測試的存儲過程
-- 當 A 表 插入 / 更新 / 刪除的時候i, 都觸發。
CREATE TRIGGER AfterA
ON A
FOR INSERT,UPDATE,DELETE
AS
DECLARE @aid INT, @money INT;
BEGIN
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 插入觸發.
-- 正確的使用.
INSERT INTO B
SELECT
inserted.aid,
inserted.money
FROM
inserted;
-- 不正確的使用.
SELECT @aid = aid, @money = money FROM inserted;
INSERT INTO C VALUES ( @aid, @money);
END;
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 更新觸發.
-- 正確的使用.
INSERT INTO B
SELECT
inserted.aid,
inserted.money - deleted.money
FROM
inserted, deleted
WHERE
inserted.AID = deleted.AID;
-- 不正確的使用.
SELECT @aid = aid, @money = money FROM inserted;
SELECT @money = @money - money FROM deleted;
INSERT INTO C VALUES ( @aid, @money);
END;
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
BEGIN
-- 刪除觸發
-- 正確的使用.
INSERT INTO B
SELECT
deleted.aid,
0 - deleted.money
FROM
deleted;
-- 不正確的使用.
SELECT @aid = aid, @money = 0 - money FROM deleted;
INSERT INTO C VALUES ( @aid, @money);
END;
END;
go
-- 一條SQL語句,插入一條數據
INSERT INTO A VALUES (100);
-- 一條SQL語句,插入多條數據
INSERT INTO A
SELECT 10
UNION ALL SELECT 20;
GO
-- 一條SQL語句,更新一條數據
UPDATE A SET money = money - 50 WHERE AID = 1;
-- 一條SQL語句,更新多條數據
UPDATE A SET money = money + 50 WHERE AID != 1;
GO
-- 一條SQL語句,刪除一條數據
DELETE FROM A WHERE AID = 1;
-- 一條SQL語句,刪除多條數據
DELETE FROM A WHERE AID != 1;
GO
SELECT * FROM B
GO
BID AID money
----------- ----------- -----------
1 1 100
2 3 20
3 2 10
4 1 -50
5 3 50
6 2 50
7 1 -50
8 3 -70
9 2 -60
(9 行受影響)
SELECT * FROM C
go
CID AID money
----------- ----------- -----------
1 1 100
2 2 10
3 1 -50
4 2 30
5 1 -50
6 2 -60
(6 行受影響)
這里, AID = 3 的數據,沒有被觸發器處理。
⑥ sql 刪除 子查詢返回的值不止一個
能給更多的信息嗎,單從sql看是沒有問題的,可以執行啊
⑦ sql 子查詢返回的值不止一個怎麼解決
問題就出在你這句:
(select@moneyfromMoney)
這句的查詢結果是money表裡有多少條記錄,就有多少個結果,你就直接:
updateMoneysetmoney=money+@moneywhereSname=@Sname
是這個意思嗎?
⑧ SQL語句,子查詢返回的值不止一個。
select * from flight_now
where 機號 in (select jh from jh where flight_now.機號 != jh.jh)
這樣就可以了
⑨ 子查詢返回的值不止一個。當子查詢跟隨在 =、!=、<、<=、>、>= 之後,關於觸發器SQL語句
update 學生信息 set 就業標志='就業' where 學號 = (select 學號 from 就業信息 where 學號=@xuehao ) --感覺應該是這個裡面出問題
為什麼不直接
update 學生信息 set 就業標志='就業' where 學號 =@xuehao
⑩ sql 子查詢 子查詢返回的值不止一個。這種情況是不允許的。 請問如何解決
可以用 in 或not in 來查詢格式select * from xx where 欄位 in(select (只能一個)欄位 from x x where 欄位<=xx)