嘿所有我想要找出一种从以下SQL查询发送 2个结果表的方法:
SELECT
CASE WHEN EXISTS
(
SELECT name FROM usersTbl WHERE name = 'Bob Barker'
)
THEN 'TRUE'
ELSE 'FALSE'
END AS result1
|result1 |
|---------|
| TRUE |
现在上面的查询工作得很好。但是,我需要执行另一个选择语句,如果它的' TRUE' 是这样的:
SELECT
CASE WHEN EXISTS
(
SELECT * FROM usersTbl WHERE name = 'Bob Barker'
)
THEN 'TRUE'
(SELECT name FROM usersTbl WHERE name = 'Bob Barker'
AND active = 1) AS result2
ELSE 'FALSE'
END AS result1
|result1 |
|---------|
| TRUE |
|result2 |
|--------------|
| Bob Barker |
因此,不再只是 result1 返回,这将允许返回 result1和result2 。
我该如何格式化查询呢?
答案 0 :(得分:0)
您查询看起来有点错误......应该是
{{1}}
答案 1 :(得分:0)
有点奇怪,但如果你想要2个结果集,你可以使用IF EXISTS()
:
IF EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker')
BEGIN
SELECT 'TRUE' as Result1;
SELECT CASE WHEN EXISTS (SELECT *
FROM usersTbl
WHERE name = 'Bob Barker'
AND active = 1)
THEN (SELECT name
FROM usersTbl
WHERE name = 'Bob Barker'
AND active = 1)
ELSE 'FALSE'
END as Result2;
END
如果您想在第一个结果不存在时返回FALSE
,则必须添加另一个IF
:
IF NOT EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker')
BEGIN
SELECT 'FALSE';
END
修改:最终FALSE
的完整查询:
IF EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker')
BEGIN
SELECT 'TRUE' as Result1;
SELECT CASE WHEN EXISTS (SELECT *
FROM usersTbl
WHERE name = 'Bob Barker'
AND active = 1)
THEN (SELECT name
FROM usersTbl
WHERE name = 'Bob Barker'
AND active = 1)
ELSE 'FALSE'
END as Result2;
END
IF NOT EXISTS (SELECT * FROM usersTbl WHERE name = 'Bob Barker')
BEGIN
SELECT 'FALSE' as Result1;
END
答案 2 :(得分:0)
这可能适合你。
SELECT
*
FROM subTable1
WHERE
st.value = 'Value'
AND st.restrictiveValue = 'restrictiveValue'
AND (SELECT COUNT(*) AS resultCount FROM subTable1 st WHERE st.value = 'Value') != 0
SELECT COUNT(*) AS resultCount FROM subTable1 st WHERE st.value = 'Value'
如果您不希望它返回空表,您可能需要查看this question.中提到的动态SQL