0

我有一张展示书籍的桌子。但是,我希望每个唯一的电子邮件地址 ( strContactEmail) 只显示一本书。我尝试了下面的查询,它没有用。非常感谢任何帮助。`

$sql =  "SELECT lngbookid, strTitle, strAuthor, strcoursecode, strISBN, ".
        " strcontactname, DISTINCT(strContactEmail) AS strContactEmail, ".
        " curPrice, ysnsalerent, dtmpostdate, memcomments, school, ".
        " ASIN, BookIMG, ISBN10, ISBN13, Updated, ".
        " datetime, user_ip, NoOtherBooks ".
        " FROM tblbooks ".
        " WHERE strcoursecode LIKE '%$search%'  ".
        " ORDER BY datetime DESC LIMIT 50";
4

2 回答 2

1

最简单的方法:

SELECT max(lngbookid) as lngbookid,
       max(strtitle) as strtitle,
       max(strauthor) as strauthor,
       max(strcoursecode) as strcoursecode,
       max(strisbn) as strisbn,
       max(strcontactname) as strcontactname,
       strcontactemail,
       max(curprice) as curprice,
       max(ysnsalerent) as ysnsalerent,
       max(dtmpostdate) as dtmpostdate,
       max(memcomments) as memcomments,
       max(school) as school,
       max(asin) as asin,
       max(bookimg) as bookimg,
       max(isbn10) as isbn10,
       max(isbn13) as isbn13,
       max(updated) as updated,
       max(datetime) as datetime,
       max(user_ip) as user_ip,
       max(nootherbooks) as nootherbooks
FROM   tblbooks
WHERE  strcoursecode LIKE '%$search%'
GROUP BY strcontactemail
ORDER  BY datetime DESC
LIMIT  50 

编辑 好吧,上面的内容实际上太“假”了。更好的方法是(假设“lngbookid”列是主键):

SELECT a.lngbookid,
       a.strtitle,
       a.strauthor,
       a.strcoursecode,
       a.strisbn,
       a.strcontactname,
       a.strcontactemail,
       a.ontactemail,
       a.curprice,
       a.ysnsalerent,
       a.dtmpostdate,
       a.memcomments,
       a.school,
       a.asin,
       a.bookimg,
       a.isbn10,
       a.isbn13,
       a.updated,
       a.datetime,
       a.user_ip,
       a.nootherbooks
FROM   tblbooks AS a
       JOIN (SELECT strcontactemail,
                    Max(lngbookid) AS lngbookid
             FROM   tblbooks
             GROUP  BY strcontactemail) AS b
         ON ( a.strcontactemail = b.strcontactemail
              AND a.lngbookid = b.lngbookid )  
于 2012-09-17T14:29:21.903 回答
1

尝试使用 GROUP BY 语句:

http://www.w3schools.com/sql/sql_groupby.asp

于 2012-09-17T14:17:09.003 回答