MySQL: Lasy UNION

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

MySQL: Lasy UNION的相关文章

mysql中UNION ALL用法

MYSQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果. 举例说明: select * from table1 union select * from table2 这个SQL在运行时先取出两个表的结果,再用排序空间进行排序删除重复的记录,最后返回结果集,如果表数据量大的话可能会导致用磁盘进行排序. MySQL中的UNION ALL UNION ALL只是简单的将两个结果合并后就返回.这样,如果返回的两个结果集

MySQL中union和order by一起使用的方法

MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明.首先看下面的t1表. 1.如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY. SELECT * FROM t1 WHERE username LIKE 'l%' ORDER BY score ASCUNIONSELECT * FROM t1 WHERE username LIKE '%m%' ORDER BY score ASC

MySQL中UNION和UNION ALL的使用

在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同. MySQL中的UNION UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果.实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION.如: select * from gc_dfys union select * from ls_jg_dfys 这个SQL在运行时先取出两个表的结果,再用排序空间进行排

【转】mysql的union、left join、 right join、 inner join和视图学习

1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例如: select id,sum(num) from (select * from ta union all select * f

mysql中 union连接

SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...] UNION用于把来自许多SELECT语句的结果组合到一个结果集合中. 列于每个SELECT语句的对应位置的被选择的列应具有相同的类型.(例如,被第一个语句选择的第一列应和被其它语句选择的第一列具有相同的类型.)在第一个SELECT语句中被使用的列名称也被用于结果的列名称. SELECT语句为常规的选择语句,但是受到如下的限定: ·   

MySQL笔记-union

union语法 select ... union [all | distinct] selct ... union用于把来自多个select语句的结果组合在一个结果集中. 两次查询的列表必须相同,否则报[The used SELECT statements have a different number of columns] 多个select语句取出的字段名可以不同,不会报错,但是最后的结果集中显示时,以第一个select语句的字段名为准. 多个select语句中取出相同数据时,union会将

mysql中union与union all的区别

当查询表结构完全相同的多张表的数据时: 1.当查询条件完全相同且不包括主键,此时用union查询会过滤掉查询出的重复的记录,及漏查记录:使用union all进行查询,则会查出所有的符合条件的记录,保证数据的完整性. 2.当查询条件完全相同且包含主键,此时用union和union all查询出来的记录相同,没有差别.

mysql的union操作

union:联合的意思,即把两次或多次查询结果合并起来. 注:两次查询的列数必须一致 列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准. 如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行. 也可以这样理解,union会去掉重复的行. 如果不想去掉重复的行,可以使用union all. 如果子句中有order by,limit,需

mysql之union

今天来写写union的用法及一些需要注意的. union:联合的意思,即把两次或多次查询结果合并起来. 要求:两次查询的列数必须一致 推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样 可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准. 如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行.也可以这样理解,union会去掉重复的行. 如果不想去掉重复的行,可以使用union a