下面伪代码的MySQL语法是什么?
Integer x = 0;
String y = "ABC";
IF (x equals 0) then
SELECT * FROM table_x
ELSE
SELECT * FROM table_y
答案 0 :(得分:1)
您可以将UNION ALL用于两个查询;当x为0时,只返回一行;当x不为0时,其他只返回行:
SET @x = 0;
SELECT * FROM table_x where @x = 0
UNION ALL
SELECT * FROM table_y where @x <> 0;
这仅适用于两个表中的列相同的情况。使用列名而不是*以确保选择相同的列集。如果要从两个表中选择不同的列(列的数量或类型不同),则不能编写一个查询,因为查询必须始终返回相同数量和类型的列。
SELECT dept_no, dept_name FROM table_x where @x = 0
UNION ALL
SELECT department_number, name FROM table_y where @x <> 0;