Sql server 如何仅显示一行

Sql server 如何仅显示一行,sql-server,Sql Server,我有这个表结构和样本数据。我只想得到一行数据。但相反,它给我的行数等于它的子记录 --DROP TABLE [Detail]; --DROP TABLE [Master]; --CREATE TABLE [Master] --( --ID INT NOT NULL PRIMARY KEY, --Code VARCHAR(25) --); --INSERT INTO [Master] VALUES (1, 'CASH'); --INSERT INTO [Master] VALUES (2, '

我有这个表结构和样本数据。我只想得到一行数据。但相反,它给我的行数等于它的子记录

--DROP TABLE [Detail];
--DROP TABLE [Master];

--CREATE TABLE [Master]
--(
--ID INT NOT NULL PRIMARY KEY,
--Code VARCHAR(25)
--);

--INSERT INTO [Master] VALUES (1, 'CASH');
--INSERT INTO [Master] VALUES (2, 'CASH');

--CREATE TABLE [Detail]
--(
--ID INT NOT NULL PRIMARY KEY,
--MasterID INT,
--DrAmount Numeric,
--CrAmount Numeric,
--CONSTRAINT FK_MASTER FOREIGN KEY (MasterID)
--REFERENCES [Master](ID)
--);

--INSERT INTO [Detail] VALUES (1, 1, '2200', NULL);
--INSERT INTO [Detail] VALUES (2, 1, NULL, '3200');
--INSERT INTO [Detail] VALUES (3, 1, '1000', NULL);
--INSERT INTO [Detail] VALUES (4, 2, NULL, '3200');
--INSERT INTO [Detail] VALUES (5, 2, '3200', NULL);
以下是查询和结果:

SELECT [MASTER].[Code], [DETAIL].[MasterID], [DETAIL].[CrAmount]
FROM [MASTER], [DETAIL]
WHERE [MASTER].[ID] = [DETAIL].[MasterID]
看起来您需要并且正如@honeybacker所建议的那样,最好使用现代的显式连接语法-它更清楚:

select m.code, d.masterid, sum(d.cramount) amount
from [master] m 
     join[detail] d on m.[id] = d.[masterid]
group by m.code, d.masterid
结果:

code   masterid  amount
CASH    1         3200
CASH    2         3200

SELECT TOP 1…
?您希望显示哪一行?不相关,但您确实应该切换到“现代”显式
join
语法,而不是逗号分隔的样式。人们倾向于发现它更容易阅读,也更容易维护。好吧,它正是按照你的要求返回的。