mysql 多表查詢資料重複的問題

2021-10-04 07:07:02 字數 1466 閱讀 2048

廢話不多說直接貼sql語句

select

moments.id as id,

count(endorse.id) as endorsecount,

count(reply.id) as replycount

from

jq_circle_moments moments

left join jq_circle_endorse endorse on moments.id = endorse.moments_id

left join jq_circle_reply reply on moments.id = reply.moments_id

where

moments.`status` = "10b"

and moments.id = "090bf03723fd4abba56dfecfa69ac410"

group by

moments.id

limit 10

結果是:

idendorsecount

replycount

090bf03723fd4abba56dfecfa69ac41099

然後我在執行

select count(id) from jq_circle_endorse where moments_id = "090bf03723fd4abba56dfecfa69ac410";

select count(id) from jq_circle_reply where moments_id = "090bf03723fd4abba56dfecfa69ac410";

分別結果是:

count(id)

3count(id)

3然後我就納悶了,為什麼應該是9應該是3,後面靈機一動加了個去重的關鍵字distinct

select

moments.id as id,

count(distinct endorse.id) as endorsecount,

count(distinct reply.id) as replycount

from

jq_circle_moments moments

left join jq_circle_endorse endorse on moments.id = endorse.moments_id

left join jq_circle_reply reply on moments.id = reply.moments_id

where

moments.`status` = "10b"

and moments.id = "090bf03723fd4abba56dfecfa69ac410"

group by

moments.id

limit 10

自從有了mybatis-plus sql語句都寫的少了

mysql多表 MySQL 多表查詢

多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...

mysql多表查詢方式 MySQL多表查詢方式問題

你的 sql 沒有用到任何索引,對 a b 兩個表都是全表掃瞄,在資料量小的時候是沒有問題的,但是如果資料量超過 100 萬,效能問題就會突顯出來。這裡不清楚你的 created at 欄位是什麼型別,不過從你的 date format created at,y m d 看來,應該是 datetim...

mysql 多表查詢or MySQL 多表查詢

前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...