我正在尝试将其保留在最小表查询中,以确保减少数据库使用量。我正在使用Microsoft SQL Server Management Server。
我有一个查询,有时根本不会返回任何内容,具体取决于用户的当前状态。如果第一个查询没有返回任何结果,我希望第二个查询运行。
这是在函数内部,需要返回单行列数据。我将包含已更改名称的查询作为示例。我会在制作临时表后进行自己的优化,因此不会经常访问数据库。我只需要弄清楚如何首先完成这项工作。
-- Query #1
INSERT @tlbReturn (returnInfo1, returnInfo2)
SELECT TOP(1) returnInfo1, returnInfo2
FROM table1 AS t1a
INNER JOIN table1 AS t1b ON t1a.someData1 = t1b.someData1
AND t1a.someData2 = t1b.someData2
AND t1a.someData3 = t1b.someData3
AND t1a.someData4 = t1b.someData4
INNER JOIN table2 AS t2 ON t2.someData6 = t1b.someData7
AND t2.someData8 = t1b.someData9
WHERE t1a.someData10 = 'value'
AND t1b.someData11 IN ('value1', 'value2')
ORDER BY t1b.someDate DESC;
-- Query #2
INSERT @tlbReturn (returnInfo1, returnInfo2)
SELECT TOP(1) returnInfo1, returnInfo2
FROM table1 AS t1a
INNER JOIN table1 AS t1b ON t1a.someData1 = t1b.someData1
AND t1a.someData5 = t1b.someData5
INNER JOIN table2 AS t2 ON t2.someData6 = t1b.someData7
AND t2.someData8 = t1b.someData9
WHERE t1a.someData10 = 'value'
AND t1b.someData11 IN ('value1', 'value2')
ORDER BY t1b.someDate DESC;
理论上我想要像
这样的东西IF EXISTS(QUERY1) THEN RETURN
ELSE RETURN QUERY2
答案 0 :(得分:1)
在第一次查询后检查@@ ROWCOUNT的值。
答案 1 :(得分:1)
先做一个选择,检查@@ ROWCOUNT如果是零就做第二次选择