同一个字段却需要Count出不同结果时
表结构如下↓
test |
---|
date | str |
---|---|
2019-06-13 | 胜 |
2019-06-13 | 负 |
2019-06-13 | 负 |
2019-06-13 | 胜 |
2019-06-13 | 负 |
2019-06-13 | 胜 |
2019-06-13 | 负 |
2019-06-13 | 负 |
2019-06-12 | 负 |
2019-06-12 | 胜 |
2019-06-12 | 负 |
2019-06-12 | 负 |
2019-06-12 | 负 |
2019-06-12 | 负 |
2019-06-12 | 胜 |
2019-06-12 | 负 |
现在我需要把str的“胜”“负”分别进行统计,计算出每天胜负的总数。希望的效果如下
日期 | 胜利 | 失败 |
---|---|---|
2019-06-13 | 8 | 6 |
2019-06-12 | 6 | 6 |
这样就必须在count()中执行一个判断,SQL语句如下
SELECT
date as '日期',
COUNT(str = '胜' OR null) as '胜利',
COUNT(str = '负' or null) as '失败'
FROM test GROUP BY date
两张表联查,按结果进行更新
表1结构如下↓
Table1 |
---|
id | content1 | content2 |
---|---|---|
1 | 1 | 2 |
2 | 1 | 2 |
3 | 1 | 2 |
4 | 1 | 2 |
5 | 1 | 2 |
表2结构如下↓
Table2 |
---|
id | content1 | content2 | age |
---|---|---|---|
1 | 111 | 222 | 11 |
2 | 111 | 222 | 41 |
3 | 111 | 222 | 51 |
4 | 111 | 222 | 61 |
5 | 111 | 222 | 71 |
需求是,将表2中age字段大于50的content1,content2更新到表1中去,那就需要将两表进行联查SQL如下
UPDATE Table1 a
INNER JOIN
(SELECT a.id,b.age,b.content1,b.content2
FROM Table1 a INNER JOIN Table2 b
ON a.id = b.id
HAVING b.age > 50) b
ON a.id = b.id
SET a.content1 = b.content1,a.content2 = b.content2
后来我发现其实并不需要这么麻烦,直接内联一次就行了
UPDATE Table1 a
INNER JOIN
(SELECT * FROM table2 b WHERE b.age > 50) b
ON a.id = b.id
SET a.content1 = b.content1,a.content2 = b.content2
未完待续…