mysql 選擇前4個 mysql從4個表中選擇

2021-10-20 22:37:15 字數 1287 閱讀 9456

不要認為group by是必需的 . 雖然如果乙個孩子有2個父記錄,你可能想用它來將2個父母分組到一行 - 但不確定這是否是你的要求 . 因為如果乙個孩子有2個父母,那麼將為該孩子返回的父母是未定義的 .

假設所有孩子都有父母,所有父母都會有姓,姓和電子郵件: -

select

k.*,

p.*,

u1.meta_value as parent_lastname,

u2.meta_value as parent_firstname,

u3.meta_value as parent_email

from kids k

inner join relations r on k.id = r.kid_id

inner join parents p on p.user_id = r.user_id

inner join usermeta u1 on r.user_id = u1.user_id and u1.meta_key = 'last_name'

inner join usermeta u2 on r.user_id = u1.user_id and u1.meta_key = 'first_name'

inner join usermeta u3 on r.user_id = u1.user_id and u1.meta_key = 'email'

如果該假設是錯誤的,則將inner join更改為left outer join

select

k.*,

p.*,

u1.meta_value as parent_lastname,

u2.meta_value as parent_firstname,

u3.meta_value as parent_email

from kids k

left outer join relations r on k.id = r.kid_id

left outer join parents p on p.user_id = r.user_id

left outer join usermeta u1 on r.user_id = u1.user_id and u1.meta_key = 'last_name'

left outer join usermeta u2 on r.user_id = u1.user_id and u1.meta_key = 'first_name'

left outer join usermeta u3 on r.user_id = u1.user_id and u1.meta_key = 'email'

mysql 選擇列 選擇MySQL表的前N列

請先看看bill karwin的 answer.但是,如果您知道如何訂購列名,那麼可能會有乙個使用動態查詢的解決方案.要從表中選擇所有列名,可以使用如下查詢 select column name from information schema columns where table schema d...

mysql 選擇索引 mysql選擇索引

1 盡量為用來搜尋 分類或分組的資料列編制索引,不要為作為輸出顯示的資料列編制索引。最適合有索引的資料列是那些在where子句中資料列,在聯結子句 現的資料列,或者是在group by order by子句 現的資料列。select 後的資料列最好不要用索引。2 綜合考慮各資料列的維度。資料列的維度...

mysql 插入前查重 Mysql插入資料前查重

常見插入資料的sql insert into 插入資料庫時會檢查主鍵是否存在,存在會報錯 replace into 替換資料庫記錄,需要表中有主鍵或者unique索引,如果資料庫已存在的資料,會先刪除該資料然後新增。不存在的資料效果和insert into 一樣。replace into govre...