簡體   English   中英

MySQL查詢:最佳查詢

[英]MySQL Query: Optimal Querying

我有這個代碼

SELECT DISTINCT idx_campus_bookinfo,c.userid as Buyer,bookname,book_explain,writedate
FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product
LEFT JOIN customer c ON ub.id_customer = c.id_customer
where cb.idx_campus = 1 and cb.idxuser = 29 ORDER BY writedate DESC

給出的輸出

點擊查看輸出

我的問題是,如何使買家專欄用同一本書的逗號分隔。

使用GROUP_CONCAT函數,但這意味着必須將DISTINCT替換為GROUP BY:

    SELECT idx_campus_bookinfo,
           GROUP_CONCAT(c.userid SEPARATOR ',') as Buyer,
           bookname,
           book_explain,
           writedate
      FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product
LEFT JOIN customer c ON ub.id_customer = c.id_customer
    WHERE cb.idx_campus = 1 
      AND cb.idxuser = 29 
 GROUP BY idx_campus_bookinfo, bookname, book_explain, writedate
 ORDER BY writedate DESC

后續問題,我可以對用戶名進行排序嗎?

是的你可以:

    SELECT idx_campus_bookinfo,
           GROUP_CONCAT(c.userid ORDER BY c.userid ASC SEPARATOR ',') as Buyer,
           bookname,
           book_explain,
           writedate
      FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product
LEFT JOIN customer c ON ub.id_customer = c.id_customer
    WHERE cb.idx_campus = 1 
      AND cb.idxuser = 29 
 GROUP BY idx_campus_bookinfo, bookname, book_explain, writedate
 ORDER BY writedate DESC

GROUP_CONCAT將獲取您的用戶ID並將其連接起來。 試試看

SELECT idx_campus_bookinfo,
       GROUP_CONCAT(c.userid) as Buyer, bookname, book_explain, writedate
FROM campus_bookinfo cb 
LEFT JOIN user_books ub ON idx_campus_bookinfo = id_product
LEFT JOIN customer c ON ub.id_customer = c.id_customer
WHERE cb.idx_campus = 1 and cb.idxuser = 29
GROUP BY idx_campus_bookinfo
ORDER BY writedate DESC

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM