在mysql關(guān)聯(lián)查詢中,常常會(huì)遇到一對多的情況,比如一個(gè)訂單對應(yīng)多個(gè)商品。這時(shí)候我們可以使用關(guān)聯(lián)只取一條的方法來獲取一對多關(guān)系中的數(shù)據(jù)。
具體方法是在關(guān)聯(lián)查詢中使用子查詢,查詢出與主表關(guān)聯(lián)的從表中的最小或最大記錄,這樣就實(shí)現(xiàn)了關(guān)聯(lián)只取一條的效果。
SELECT o.*, (SELECT g.name FROM goods g WHERE g.order_id = o.id ORDER BY g.id ASC LIMIT 1) AS goods_name FROM orders o;
上面的查詢語句中,我們使用子查詢查詢出與訂單關(guān)聯(lián)的商品記錄中的第一條,即商品表中id最小的記錄,然后將其命名為goods_name,添加到訂單表o中,這樣我們就可以實(shí)現(xiàn)一對多關(guān)系中關(guān)聯(lián)只取一條的效果。