Mysql Join Where 子句重复结果

标签 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

有谁能帮帮我吗?我感觉这是一个非常愚蠢的问题,但我现在无法弄清楚!

最佳答案

如果您希望每个代码都有一个记录,然后列出每个代码的条形码,则可以执行此操作。否则,您的查询将正常工作,如果每个代码有 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;

关于Mysql Join Where 子句重复结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18878168/

相关文章:

mysql - 如何在不使用 count(*) 查询的情况下获取表 MySQL 版本 4 中的行数?

python - 我无法使用 django 连接到数据库

php - Laravel Eloquent 中的 If 语句

postgresql - 多个 UPDATE ... FROM 同一行不起作用

php - 在连接查询中使用多个和条件

php - MySQL 使用 join 连接表

php - 纠正 MySQL 空间查询的逻辑

mysql - Mysql如何回滚?

mysql - MySQL如何进行两张表join的查询

mysql - 我如何在 Laravel 中编写此 SQL 查询?编写 mySQL 的正确方法 HAVING