mysql中union和union all的区别和注意点

昨天有个功能要实现排行效果,而且是随机按照某些字段的总值,但是第一个又要不一样,因为第一个人给了钱,所以要排第一。

打个比方吧,表(userinfo)中有这几个字段:username,isvalid,givedmoney,sumip,dayip,monthip,visitcount,regdate

现在要实现显示排行前10位用户,

出现在排行第一位的要是givedmoney为1的用户(表示给了钱), 而且isvalid为1(表示通过认证)

其它的9个用户呢,要在字段(sumip,dayip,monthip,visitcount)中随机选择一个作为排序的依据

这样的sql语句改怎么写呢?

下面是我的答案:

$arr_orderby=array("sumip","dayip","monthip","visitcount");

$orderby_filed=$arr_orderby(array_rand($arr_orderby) ); //得到随机字段

$sql="(select username,".$orderby_filed." from userinfo where isvalid=1 and givedmoney=1 limit 1) union (select username,".$orderby_filed." from userinfo where isvalid=1 and givedmoney!=1 limit 9) order by rand(),".$orderby_filed." desc";

?>

这里需要注意的几点是,

1:union前后的select字段一定要一样,而且顺序要一样,如果你不是select * 的话

2:第二个select中,试试limit 9和limit 10有什么不一样的效果

union和union all的区别就是后面能踢出重复的结果,如果确定表中没有重复的字段,建议使用union all

一 UNION语法

代码 复制代码

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]

SELECT ...

UNION [ALL | DISTINCT]

SELECT ...

[UNION [ALL | DISTINCT]

SELECT ...]

UNION用于把来自许多

相关文档:

给mysql开一个可以远程访问的用户命令如下:

GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;

"*.*" 表示数据库中所有的表,也可以换成指定的表如test.*

"myuser" 表示的是访问的用户名;

"%" 表示所有的主机即任何的主机都可以通过这个用户名访问我的数据库,也可以该成特定� ......

在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

在 SQL Server 中可以这样处理:

if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = ......

1. 给root加密码:/usr/bin/mysqladmin -u root password 123456

2. 导出:mysqldump -u root -p dbname > file.sql

3. 导入:mysql -u root -p dbname < backup-file.sql

4. 授权:grant all on *.* to root@"%" identified by "密码";

5. 收回权限:revoke all privileges on *.* from root@"%";

6. 登录:mys ......

mysql的  find_in_set函数使用方法

很多时候我们在设计数据库时有这种情况,比如:

有个文章表里面有个type字段,他存储的是文章类型,有 1头条,2推荐,3热点,4图文 .....11,12,13等等

现在有篇文章他既是 头条,又是热点,还是图文,

type中以 1,3,4的格式存储.

那们我们如何用sql查找所有type中有4图文标准的文章呢 ......

mysql union 不同字段_mysql中union和union all的区别和注意点相关推荐

  1. mysql 表和视图_MySQL中视图和普通表的区别

    1.视图是数据库数据的特定子集.可以禁止所有用户访问数据库表,而要求用户只能通过视图操作数据,这种方法可以保护用户和应用程序不受某些数据库修改的影响. 2.视图是抽象的,他在使用时,从表里提取出数据, ...

  2. mysql获取当月最后一天_mysql中获取本月第一天、本月最后一天、上月第一天、上月最后一天

    mysql获取当月最后一天_mysql中获取本月第一天.本月最后一天.上月第一天.上月最后一天等等 转自: https://blog.csdn.net/min996358312/article/det ...

  3. mysql union如何排序_Mysql中UNION用法与排序

    最近也是在写项目中碰到的这个问题,需要将两个SELECT查询结果组合起来进行分组排序,想到了用union方法,用TP的union操作根本无法完成复杂的union操作,于是搜罗了一下,先说一下union ...

  4. mysql得union使用方法_mysql中Union All使用方法

    在mysql数据库使用UNION 时,会把结果集中重复的记录删掉,也正因为做了去重操作,所以效率相对Union All来讲稍微低一点,使用UNION ALL ,MySQL 会把所有的记录返回,效率高于 ...

  5. mysql union 放弃索引_MySQL的or/in/union与索引优化

    本文缘起自<一分钟了解索引技巧>的作业题. 假设订单业务表结构为: order(oid, date, uid, status, money, time, -) 其中: oid,订单ID,主 ...

  6. mysql优化sql语句_mysql中sql语句的优化

    1.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描 select id from t where num=10 or num=20 可以这样查询: s ...

  7. mysql自增字段_MySQL自增字段的常用语句

    学习MySQL数据库,MySQL自增字段是最基础的部分之一,下面为您介绍一些MySQL自增字段的常用语句,希望对您学习MySQL自增字段能些许帮助. 1.创建表格时添加: create table t ...

  8. mysql添加临时索引_mysql 中添加索引的三种方法

    在mysql中有多种索引,有普通索引,全文索引,唯一索引,多列索引,小伙伴们可以通过不同的应用场景来进行索引的新建,在此列出三种新建索引的方法 mysql 中添加索引的三种方法 1.1 新建表中添加索 ...

  9. mysql在线增加字段_MySQL在线加字段实现原理

    作者:vinchen 腾讯互娱内部维护了一个TMySQL分支,基于官方5.5.24,实现了类似于Oracle 11g的快速加字段功能.该功能通过扩展存储格式来实现,原理类似于Oracle 11g,以下 ...

最新文章

  1. linux内核使用scons构建,如何使用scons进行交叉构建
  2. Spring-常见问题25问
  3. 将用户添加到sudoers_Linux操作系统中sudo的使用和sudoers配置
  4. C++一学就废?试试这个项目包
  5. 计算机没有游戏扫雷,系统没有扫雷游戏怎么办 简单几步轻松安装
  6. 电机与拖动单相变压器实验,江南大学物联网工程学院,实验报告
  7. java jol原理_Java对象布局(JOL)实现过程解析
  8. 在墙上找垂直线_墙上如何快速找水平线
  9. 【转】linux通配符和正则表达式
  10. java实现PDF转word,使用jacob插件
  11. php免费项目下载文件,php——文件下载
  12. 中兴e8820刷openwrt_2020/05/17 中興E8820V2 OPENWRT自編譯分享 原廠EPPROM修改
  13. C#实现将文件、文件夹压缩为压缩包
  14. 入门神经网络优化算法(五):一文看懂二阶优化算法Natural Gradient Descent(Fisher Information)
  15. dve 二维数组信号 显示波形_交互式仿真下dve和verdi中查看二维数组值
  16. html text-decoration,text-decoration 属性
  17. 多对多业务,数据库水平切分架构一次搞定(58沈剑)
  18. 在windows中要使用计算机进行高级,2017年电大计算机上机操作题(带答案)
  19. ORACLE中dual的详解及其故障恢复
  20. APICloud App开发上手经验分享之模块调用

热门文章

  1. windows进程管理问题
  2. in use 大学英语4word_《新视野大学英语4网络测试题unit6++Microsoft+Word+文档》.doc
  3. 《Oracle数据库管理与维护实战》——1.2 Oracle各版本异同
  4. java基本类型引用类型_Java基本类型和引用类型
  5. f.readline()的奇妙坑点
  6. Reset Password Windows Server 2008 r2
  7. 冲上云霄 之一 初识云
  8. 提升代码格调——JavaScript 数组的 reduce() 方法入门
  9. C#运行时的相互关系
  10. 个人管理 - 我是这样偷着做架构的