Method 1:
From book <高性能MySQL>
select greatest(@found := -1, user_id) as user_id, ‘user‘ as which_tbl from user where user_id = 1 union all select user_id as user_id, ‘user_archive‘ as which_tbl from user_archive where user_id = 1 and @found is null union all select 1, ‘‘ from dual where ( @found := null ) is not null;
Method 2: I voted this....
http://stackoverflow.com/questions/3202242/mysql-if-a-select-query-returns-0-rows-then-another-select-query
SELECT SQL_CALC_FOUND_ROWS * FROM mytable WHERE x = 1 UNION ALL SELECT * FROM mytable WHERE FOUND_ROWS() = 0 AND x = 1;
Method 3:
SELECT * FROM mytable WHERE x = 1 UNION SELECT * FROM mytable2 WHERE x = 1 AND NOT EXISTS (SELECT * FROM mytable WHERE x = 1);
时间: 2024-09-29 02:03:09