Mysql Join Where子句重复结果

时间:2013-09-18 17:02:42

标签: mysql join

我有一个简单的SQL连接,它会复制结果中的数据。一个表查询:

select * from ohyeah_borrower_prefs where inumber=13522

正确返回3行。

   ID      Num     iNum       Cat       Subcat         Date         Code
'14332', '13522', '13522', 'Fiction', 'Espionage', '2011-04-04', 'BRAILLE'
'14333', '13522', '13522', 'Fiction', 'Espionage', '2011-04-04', '2 TRACK'
'14334', '13522', '13522', 'Fiction', 'Espionage', '2013-07-18', 'LARGE PRIN'

但是,如果我尝试将此连接添加到我的项目表中以获取唯一条形码,我会得到9个结果而不是我期望的3个结果 - 看到每个结果重复3次!

select code, items.barcode from ohyeah_borrower_prefs 
LEFT JOIN items ON
`items`.`inumber` = `ohyeah_borrower_prefs`.`inumber` 
WHERE (`ohyeah_borrower_prefs`.`biblionumber` = 13522)

结果:

 CODE          BARCODE
BRAILLE       90004071
BRAILLE       30025000162744
BRAILLE       30025000128349
"2 TRACK",    90004071
"2 TRACK",    30025000162744
"2 TRACK",    30025000128349
"LARGE PRIN"  90004071
"LARGE PRIN"  30025000162744
"LARGE PRIN"  30025000128349

有人能帮助我吗?我有一种感觉,这是一个非常愚蠢的问题,但我无法在妈妈身上弄明白!

1 个答案:

答案 0 :(得分:0)

如果您想要每个CODE的单个记录,然后列出每个CODE的条形码,则可以执行此操作。否则您的查询工作正常,如果每个代码有3个条形码,每个代码将获得3行。

select code, GROUP_CONCAT(items.barcode) as barcodes

from   ohyeah_borrower_prefs 

       LEFT JOIN items 
       ON `items`.`inumber` = `ohyeah_borrower_prefs`.`inumber` 

WHERE (`ohyeah_borrower_prefs`.`biblionumber` = 13522)

GROUP BY code;