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
我知道这不起作用,但这是一个可以理解的例子。
在一个查询中,所有这些都可能吗?
答案 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;