今天有個需求,是通過兩張表進行查詢。一對多的關係。通過乙個主鍵,取出其中的一條。
開始以為還好,直接用用了left join on進行查詢。卻發現了問題所在。
其他的好弄。
開始的寫法借鑑這篇部落格:
沒能解決問題,因為取出的資料中不是我想要的最新的,而是最小的id的那個。
為什麼會這樣呢,了解了才知道,說是group by 分組取出的是按照最小的取出的,我也很絕望!
接下來參照了這個sql:
select id,user_id,problems,last_updated_date from (select * from t_iov_help_feedback order by user_id, last_updated_date desc) b
group by b.user_id;
參照的是這篇部落格:
很鬱悶的是,他的部落格,他最後取出了最大的值,而我卻依舊沒有最大值。因為這篇部落格的原理就是因為group by取出的是最小的,所以它就先按照id查出最大的。很顯然,又失敗了!!!
這個時候,已經弄了一下午,快下班了。
於是又繼續看網上的一些部落格。
找到了最原始的寫法,於是按照最原始的寫法:
語法格式是:
select * from table where id in (select max(id) from table group by [去除重複的欄位名列表,....])
1參照這個格式,去重的寫法。進行分組。
最終,達到了我想要的結果。
select
revisit_id,
consultation_id,
result_name,
revisit_time
from
tb_cloud_consultation_revisit
where revisit_id in
(select
max(revisit_id)
from
tb_cloud_consultation_revisit
group by consultation_id )
部落格源於:
接下來就可以很簡單的完成剩下的部分了:
select
a.`consultation_id` as consultationid,
a.consultation_name as consultationname,
a.consultation_phone as consultationphone,
a.consultation_date as consultationdate,
a.mode_name as modename,
a.`channel_name` as channelname,
a.intention_name as intentionname,
a.reason_name as reasonname,
a.`pension_card` as pensioncard,
a.remark as remark,
a.pension_name as pensionname,
a.ability_name as abilityname,
b.result_name as resultname
from
tb_cloud_consultation a
left join
(select
revisit_id,
consultation_id,
result_name,
revisit_time
from
tb_cloud_consultation_revisit
where revisit_id in
(select
max(revisit_id)
from
tb_cloud_consultation_revisit
group by consultation_id )
) b
on b.`consultation_id` = a.`consultation_id`
Mysql左連線分頁查詢
個人 1.常見錯誤 select from user t1 left join user tages t2 on t2.userid t1.id limit 0,10 這種先連線查詢在分頁的是錯誤的,正常的是先分頁,再連線查詢 改進 使用子查詢 select t1.id,t1.program tok...
Mysql內連線 左連線 右連線查詢
建表語句如下 建立表a table table structure for a table drop table if exists a table create table a table id smallint 6 auto increment,name varchar 10 not null,...
MySQL內連線 外連線(左連線 右連線)查詢
mysql多表查詢在實際應用中是非常重要的,現在這裡用兩張表讓你徹底搞懂mysql內連線和外連線查詢。其中comment表中的user id為user表中的id。準備工作 建立使用者資訊user表 create table user id int 11 not null auto increment...