## mysql中问题列表:
> **1. UNION ALL 和 UNION 的区别**
区别:UNION ALL可以把相同记录的数据累计分组查出,UNION查询如果是相同的数据,只能查询出一条
> **2:Union用法**
```
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id ) AS uv,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202408
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id ) AS uv,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202409
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id ) AS uv,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202410
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id ) AS uv,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202411
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id ) AS uv,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202412
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date
```
> 3:Union+Join用法
```
SELECT
*
FROM
(
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202408
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202409
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202410
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202411
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date UNION
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( CASE WHEN `system` = 1 THEN income / 1000000 ELSE income END ) AS ad_income,
't'
FROM
`fanqie_novel`.fq_ads_upload_record_months_202412
WHERE
play_status = 1
AND date BETWEEN 20240801
AND 20241231
AND income > 0
AND book_id != 0
AND channel_id != 0
GROUP BY
date
) AS a
LEFT JOIN (
SELECT
*
FROM
(
SELECT
date,
MIN( date ),
MAX( date ),
COUNT( DISTINCT user_id, date ) AS num,
sum( adv_income ) AS ad_income,
'r' AS t
FROM
`fanqie_novel`.`fq_link_user_behavior_records`
WHERE
`adv_income` > '0'
AND date BETWEEN 20240801
AND 20241231
GROUP BY
date
) AS b
) AS b ON a.date = b.date
WHERE
b.date IS NULL
OR a.num != b.num
OR a.ad_income != b.ad_income
ORDER BY
a.date ASC;
```
3:mysql表的类型引起的问题,我这边有一个thrd_video_id,表的字段,设置为:

然后执行sql:
```
SELECT
*
FROM
videos
WHERE
third_video_id = 7482714718927326224
```
