【问题标题】:mysql : using like return duplicate row countmysql:使用like返回重复的行数
【发布时间】:2013-03-26 18:19:47
【问题描述】:

下面有问题

表1

第一种情况:

postcode
LS1 1LS

第二种情况:

postcode
LS11LS

表2

    postcode| region
    LS1 | Leeds
    LS11    | Leeds

我正在使用以下查询来计算区域与相关邮政编码

SELECT table2.region as 'Region', COUNT( table2.postcode ) as  'count'
FROM table1
INNER JOIN table2 ON table1.postcode LIKE CONCAT( table2.postcode,  '%' ) 
WHERE table1.postcode >  ''
GROUP BY Region 

在我得到的第一个案例上应用表 1

Leeds | 1

将它应用于表 1 第二个案例我得到

Leeds | 2

由于某种原因,在此邮政编码/类似邮政编码中,另一半与第一部分完全相同,并且在类似内部连接之间没有空格返回计数为 2。

有什么解决办法吗?

看到这个sqlfiddle

【问题讨论】:

  • 我想我没有关注你的数据示例。 LS2 的 Leeds 条目如何与 LS1 1LSLS11LS 中的任何一个连接?表1中是否同时存在LS1 1LSLS11LS
  • 我也很困惑——“LS1”永远不会像“LS2%”...
  • @MikeBrant 对不起它的 LS1,已编辑,是的,最终用户错误可能会在一个表上出现 LS1 1LS 或 LS11LS 条目
  • @AhmedElGamil Cannot repeat。你确定你没有通过插入第二行同时保留第一行来测试案例 2,这会给出 2 个匹配的行吗?
  • hmm 这个小提琴很好,我的代码和这里的完全一样,如果我把这条记录改成没有空格的 LS11LS,它只给出计数 2,我截断了表格,仍然一样.. 生病了重新检查我的代码

标签: php mysql postal-code


【解决方案1】:

如果表 1 中有两个条目,其值为 LS1 1LSLS11LS,则您的联接将匹配这两个条目,计数为 2。

【讨论】:

    猜你喜欢
    • 2020-08-31
    • 2015-02-22
    • 2013-08-03
    • 2014-02-14
    • 2014-08-08
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    相关资源
    最近更新 更多