mysql中union和union all的区别和注意点
昨天有个功能要实现排行效果,而且是随机按照某些字段的总值,但是第一个又要不一样,因为第一个人给了钱,所以要排第一。
打个比方吧,表(userinfo)中有这几个字段:username,isvalid,givedmoney,sumip,dayip,monthip,visitcount,regdate
现在要实现显示排行前10位用户,
出现在排行第一位的要是givedmoney为1的用户(表示给了钱), 而且isvalid为1(表示通过认证)
其它的9个用户呢,要在字段(sumip,dayip,monthip,visitcount)中随机选择一个作为排序的依据
这样的sql语句改怎么写呢?
下面是我的答案:
<?php
$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用于把来自许多
相关文档:
Link from : http://www.5ilinux.com/blog/archives/000091.html
1.首先我们建立相应的用户和用户组
groupadd -g 5500 ftpgroup
adduser -u 5500 -s /bin/false -d /bin/null -c "proftpd user" -g ftpgroup ftpuser
2.操作数据库
mysql mysql -uroot -ppassword
create database ftpdb
grant select, upd ......
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 ......
1、下载MySQL的Linux安装文件
Linux下安装MySQL需要下面两个文件:
MySQL-server-5.1.7-0.i386.rpm
下载地址为:http://dev.mysql.com/downloads/mysql/5.1.html,打开此网页,下拉网页找到“Linux x86 generic RPM (statically linked against glibc 2.2.5) downloads”项,找到“Ser ......
Some problems encounted this afternoon, when trying to setup/test mysql capabilities on hypnos and virgil.
1.ERROR 2003 (HY000): Can't connect to MySQL server on 'server-name' (111)
access locally (i.e. from localhost) is fine, when trying remotely got this error. when tried with mysql++ library, ......