如果EXISTS(customers.salary>'1000')
,我想要返回数字'1'我试过了:
SELECT 1
FROM customers
WHERE EXISTS (customers.salary>'1000')
这也可行:
SELECT COUNT(salary)
FROM (SELECT DISTINCT(salary) FROM (SELECT salary FROM costomers WHERE salary>'1000'));
但如果我想返回其他不是1的号码怎么办?
答案 0 :(得分:2)
SELECT
CASE WHEN (customers.salary>1000) THEN 1 ELSE 0 END AS overThousand
FROM customers
工资超过1000的每一行都会带回1。所以如果你也取了你的客户名,你的结果将是“bob,1”(薪水超过1000),“Dave,0”(薪水低于1000) )。
如果客户表中任何地方的薪水超过1000,那么你真的只想要一个'1',以下是我的建议:
SELECT 1
WHERE EXISTS (SELECT c.salary FROM customers c WHERE c.salary > 1000)
答案 1 :(得分:0)
您可以通过第一个查询或表达式返回任意数量的选择。
SELECT 10
FROM customers
WHERE EXISTS (customers.salary>'1000')
有关详细信息,请查看SELECT语句的语法,然后阅读Oracle文档中的SQL expressions,了解更多详情。
编辑: 为了澄清,这个答案适用于Oracle数据库,即使您在寻找答案时并不关心数据库。
答案 2 :(得分:0)
跟进您的评论,以下内容适用于T-SQL
如果工资大于1000,它将返回1
,如果不存在,则返回NULL
:
SELECT MAX(1)
FROM customers
WHERE salary>1000