在mysql中根据条件执行另一个查询的情况

时间:2017-12-07 10:23:12

标签: mysql

我遇到了一个问题,概念是来自@count的值来执行查询和执行查询。我该怎么做才能解决它?

这是我的代码:

SELECT 
    CASE WHEN ((SELECT COUNT(*) FROM tb_dana_user WHERE userid=1234 AND password=1234) = 0)
            THEN (SELECT * FROM tb_dana_user) 
            ELSE (SELECT 'bar') 
    END

当我将SELECT * FROM tb_dana_user更改为SELECT 'its true'时,它正常运行。如何解决这个案子?抱歉英文不好。概念是真的,然后查询将执行SELECT * FROM tb_dana_user

1 个答案:

答案 0 :(得分:0)

CASE表达式求值为一个值,即它用于根据某些条件求值到一组结果中的一个。 例如:

SELECT CASE
    WHEN type = 1 THEN 'foo'
    WHEN type = 2 THEN 'bar'
    ELSE 'foo-bar'
END AS column_name
FROM sometable`

CASE语句执行一组语句中的一个,根据某些条件返回一个结果。

then语句有一个查询(select * from tb_dana_user),它返回多行。

在您的情况下,您可以将select * from tb_dana_user返回的值限制为同时为一列的一个。

SELECT 
    CASE WHEN ((SELECT COUNT(*) FROM tb_dana_user WHERE userid=1234 AND password=1234) = 0)
            THEN (SELECT id FROM tb_dana_user limit 1) 
            ELSE (SELECT 'bar') 
    END