mysql 连接查询时如何从第二章表中根据不同条件获取不同字段
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 连接查询时如何从第二章表中根据不同条件获取不同字段相关的知识,希望对你有一定的参考价值。
如 bill表中 waiter_id ,marketing_id,operator_id 都是对应user 表的id
需要从user表获取 waiter_name,marketing_name,operator_name 该怎么做(只连接一次表能实现吗)
FROM `bill` AS b
JOIN `user` AS u ON b.waiter_id=u.id
JOIN `user` AS v ON b.marketing_id=v.id
JOIN `user` AS w ON b.operator_id=w.id 参考技术B select u.waiter_name,u.marketing_name,u.operator_name from user u join bill b on b.waiter_id
= u.id and b.marketing_id = u.id and b.operator_id
= u.id追问
SELECT u1.user_name AS closer_name,u2.user_name as market_name FROM repast_consume_bill bill LEFT JOIN repast_user u1 on bill.bill_close_oper_id=u1.id
参考技术C 可以,使用连接查询就可以!追问是获取几个user_name 连几张表吗?
mysql连接查询
sql知识
一,两表外连接查询
1,A表和B表左连接
先将左表(A)数据查出,然后根据on后面的条件,将右表中凡是id与左表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null。
2,A表和B表右连接
先将右表(B)数据查出,然后根据on后面的条件,将左表中凡是id与右表id相等的记录都查出来,与匹配的左表记录依次排成一行或多行,若无匹配的记录,则显示null
没有用where子句的交叉连接将产生连接所涉及的笛卡尔积第一个表的行数乘以第二个表的行数等于笛卡尔积和结果集的大小。 Cross join 后面不能跟on 只能用where 。但是如果带返回或显示的是匹配的行数。不带条件where。
这里还有一种交叉连接表示方法
4,A表和B表完整外部连接查询(mysql 目前不支持)
二,group by if count sum
group by 将查询的结果按列或者多列的值分组,值相等的为一组
if if(表达式,value1,value2) 表达式成立时值是value1 否则是value2
count 计数
sum 求和
某表ps内容如下
mysql> select * from ps; +------------+------+ | RQ | SF | +------------+------+ | 2006 - 06 - 09 | s | | 2006 - 06 - 09 | s | | 2006 - 05 - 09 | f | | 2006 - 05 - 09 | f | | 2006 - 05 - 10 | s | | 2006 - 05 - 10 | f | | 2006 - 05 - 10 | f | +------------+------+ 7 rows in set ( 0.00 sec) |
希望求到如下结果
1 2 3 |
1 2 3 4 5 6 7 8 | mysql> select RQ,sum( if (SF= "s" , 1 , 0 )) s ,sum( if (SF= "f" , 1 , 0 )) f from ps group by RQ; +------------+------+------+ | RQ | s | f | +------------+------+------+ | 2005 - 05 - 09 | 2 | 2 | | 2005 - 05 - 10 | 1 | 2 | +------------+------+------+ 2 rows in set ( 0.00 sec) |
sum(
if
(SF=
"s"
,
1
,
0
))
可以求得s的出现次数
以上是关于mysql 连接查询时如何从第二章表中根据不同条件获取不同字段的主要内容,如果未能解决你的问题,请参考以下文章