2012-09-06 53 views
0

我有一个3列的表(包含只能从0到10的值的整数值)。我想用一个查询提取1列的表。此列必须假定基于以下逻辑的值:0查询SQL返回自定义值

  1. 如果这三个列中的一个具有值0 ---->的由查询生成的表的列的值必须是太。

  2. 如果没有最后三列有值0 ---->列的值必须假定值1

+0

其实如果域总是在1..10范围 - 因此从未0 - 符合您的要求是'SELECT 1 FROM TBL的查询;';-) – LSerni

+0

你是对的;) – GVillani82

回答

2

您正在寻找CASE结构或IF功能:

SELECT CASE WHEN (t.field1 = 0 OR t.field2 = 0 OR t.field3 = 0) THEN 0 
     ELSE 1 END AS value 
FROM t; 

在这种特定的情况下,您还可以使用一个事实,即任何成员为零意志零产品:

SELECT CASE WHEN (t.field1*t.field2*t.field3 = 0) THEN 0 ELSE 1 END AS value 
FROM t; 

或者

SELECT IF((t.field1*t.field2*t.field3)=0, 0, 1) AS value FROM t; 
1

这是一个简单的case语句。假设没有NULL值,试试这个:

select (case when col1 = 0 or col2 = 0 or col3 = 0 then 0 else 1 end) 
1

试试这个

SELECT 
    CASE 
    WHEN column1 = 0 THEN 0 
    WHEN column2 = 0 THEN 0 
    WHEN column3 = 0 THEN 0 
    ELSE 1 
    END 
FROM urtable