简单如果在SQL中的Else语句

时间:2014-05-12 18:43:08

标签: mysql sql if-statement

我试图从只有更多货币的表中获取美元和欧元的行。

我认为代码应该是这样的:

SELECT IF(CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='USD',1,0) OR IF(CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR',1,0
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES

但我知道这不应该是怎么回事。我希望这张桌子像是一列美元和欧元

5 个答案:

答案 0 :(得分:1)

您似乎正在尝试使用Excel的IF(condition, true_response, false_response)语法。 T-SQL中的等价物是CASE WHEN THEN ELSE END语法:

SELECT 
    CASE 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY ='USD' THEN 1 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR' THEN 1
        ELSE 0
    END 
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES

这将比您给我们的示例更复杂的查询。另一种方法是,如果你有相同字段的许多可能值将返回相同的响应,那么

SELECT 
    CASE 
        WHEN CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY IN ('USD','EUR') THEN 1
        ELSE 0
    END 
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES

但是,这不是用于获取具有特定货币的行的正确语法;

的上一个答案
SELECT *     
FROM 
    CONTRACTS_IN_DIFFERENT_CURRENCIES
WHERE 
    CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY IN ('USD','EUR') 

最适合那个。

答案 1 :(得分:0)

SELECT * 
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE
CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='USD' OR CONTRACTS_IN_DIFFERENT_CURRENCIES.CURRENCY='EUR'

OR

SELECT * 
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE
`CONTRACTS_IN_DIFFERENT_CURRENCIES`.`CURRENCY`="USD" OR `CONTRACTS_IN_DIFFERENT_CURRENCIES`.`CURRENCY`="EUR"

我不明白,1,0)那部分。因此,如果您需要更多条件,请使用ANDOR和括号组合来获得结果。

只是为了通知您,如果您需要disctinc(非重复值),您可以使用单词DISTINCT并说明您需要的字段。

答案 2 :(得分:0)

您需要使用WHERE子句。

据我所知,您正在寻找

的查询
SELECT * FROM `CONTRACTS_IN_DIFFERENT_CURRENCIES` WHERE `CURRENCY` = "USD" OR `CURRENCY` = "EUR"

答案 3 :(得分:0)

我认为前面的答案很好,但是我们说你会有很多货币,你可以做到

SELECT * FROM CONTRACTS_IN_DIFFERENT_CURRENCIES WHERE CURRENCY IN  ("USD","EUR")

答案 4 :(得分:0)

如果您想要计算每种货币的合约数量,并将每个计数作为一列(这似乎由您问题中的一条评论表示),那么请使用此...

SELECT SUM(CURRENCY = 'USD') AS usdContracts, 
    SUM(CURRENCY = 'EUR') AS eurContracts
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES

如果您想要计算每种货币的合约数量,每个货币计数为一列中的计数和另一列中的货币缩写,则使用此...

SELECT COUNT(*) AS numContracts, CURRENCY AS currency
FROM CONTRACTS_IN_DIFFERENT_CURRENCIES
WHERE CURRENCY = 'USD' OR CURRENCY = 'EUR'
GROUP BY CURRENCY;