我有一个非常糟糕的客户数据库,但我必须使用它。我们有一组产品id,每个id由产品的属性组成。我想做的是选择那些与前4或5个字符匹配的i d,并将它们作为所选产品的变体放在下拉框中。
我试过“按子项分组(0,6)”,但这似乎只返回组中的第一个匹配项。我需要的是有单独的查询,它只返回具有匹配的前x个字符的所有单独行。
因此,例如,我希望查询返回:
12345xx个
12345yy年
12345zz号
然后另一个会回来:
56789xx个
56789yy年
56789zz型
以下查询将只返回:
12345xx个
然后
例如56789yy

select tbl_item.Description, tbl_item.`Description 2`, tbl_item.`Inventory Posting Group`, tbl_item.No_, tbl_item.`Web Description`, tbl_item.`Web Headers`, tbl_item.`Unit Price`, tbl_item.`Sales (Qty_)`, tbl_item.`Product Group Code`
from tbl_item
where tbl_item.`Product Group Code` = ':shopprodid' and tbl_item.`Vendor No_` = '$vendor_no'
group by substr(0,6)

最佳答案

解决方案是将substr和LIKE放在WHERE子句中(不需要对任何内容进行分组)。顺便说一下,在MySql中,子字符串从索引1开始,而不是从0开始。

select *
from tbl_item
where substr(tbl_item.`Product Group Code`, 1, 6) LIKE ':shopprodid%'

关于mysql - MySQL按ID字段上的x个字符分组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7091018/

10-15 18:55