' IF' in' FROM' statement - 根据列值选择表值

时间:2015-06-30 23:29:21

标签: mysql

SELECT CI FROM users WHERE something;

IF users.CI='pc' THEN
    SELECT name FROM table1 WHERE something;
ELSE IF users.CI='ph' THEN
    SELECT name FROM table2 WHERE something;
END IF

我知道这不起作用,但这是一个可以理解的例子。

在一个查询中,所有这些都可能吗?

2 个答案:

答案 0 :(得分:0)

SET @var = (SELECT CI FROM users WHERE something);

SELECT
    CASE @var
        WHEN 'pc' THEN
            (SELECT name FROM table1 WHERE something)
        WHEN 'ph' THEN
            (SELECT name FROM table2 WHERE something)
    END;

答案 1 :(得分:0)

您无法在SQL查询中使用IF ... THEN

解决方案是左外连接两个表,让优化器通过在ON子句中指定使用哪个表来选择。

你没有解释什么"什么"是的,所以在这个例子中,我将假设"用户"有一个" id"列和table1和table2有一个" user_id"列,以及您对id = 1的用户感兴趣。

SELECT COALESCE(t1.name,t2.name) AS name
  FROM users u
  LEFT JOIN table1 t1 ON u.CI = 'pc' AND t1.user_id = u.id
  LEFT JOIN table2 t2 ON u.CI = 'ph' AND t2.user_id = u.id
 WHERE u.id = 1;