有没有办法获得至少X行?即使查询返回0行。 例如,如果一个表总共有3行,那么如何从该表中执行SELECT TOP 10并返回包含数据的3行和7行全部为空的行?
我环顾四周但找不到我想要的确切答案。 我正在使用SQL Server 2012 谢谢!
答案 0 :(得分:0)
我相信您需要使用数字表作为起点。然后你可以将数字表连接到数字表来实现这个结果。
WITH CTE_numbers AS (--using a cte as an example of a numbers table
SELECT 1 as rn
UNION ALL
SELECT 2
UNION ALL
SELECT 3)
,
cte_Top as(--Query to select top X number of records
SELECT TOP 3 'testdata' r,ROW_NUMBER() OVER(ORDER BY column) as rn
FROM Table)
SELECT *
FROM CTE_numbers cb
LEFT JOIN cte_Top ct
ON cb.rn = ct.rn
即使使用“TOP”的查询在结果中没有等量的行,这也应该为您提供正确的行数。我使用前三名而不是前十名,但您可以更改查询以满足您的需求。
答案 1 :(得分:0)
One method just appends 10 empty rows and then chooses 10 rows from the entire result set:
import { Answer } from "./answer";
export class Question {
constructor(private question: string = '',
private answers: any[] = [],
private more_informations: string = '',
private difficulty: number = 0,) {
}
setModel(obj) {
Object.assign(this, obj);
}
addAnswer() {
let new_answer = new Answer();
new_answer.setModel({ text: 'test', value: false });
this.answers.push(new_answer);
}
setAnswers(number_answers) {
for (let i = 0; i < number_answers; i++) {
this.addAnswer();
}
console.log(this);
}
}
答案 2 :(得分:0)
我最后首先在函数上使用了一行,然后在表中加入。工作就像一个魅力。谢谢你的帮助!