数据分组查询

wwx840723 2015-04-16 05:26:10
有如下表A:
name product_id model Material
TYLER 1 Armband for phone A-AB00P133A-FT01
TYLER 2 Armband for phone A-AB00P133A-FT02
TYLER 3 Armband for phone A-AB00P133A-FT03
TYLER 7 Armband for phone A-AB00P146A-FT01
TYLER 8 Armband for phone A-AB00P146A-FT02
TYLER 9 Armband for phone A-AB00P146A-FT03
TYLER 49 Armband for phone A-AB00P162A-FT01
TYLER 50 Armband for phone A-AB00P162A-FT02
HIPPO 85 Power for Home & Office A-AD00-0002-EU
HIPPO 86 Power for Home & Office A-AD00-0002-ES
KUGA 88 Power for Home & Office A-AD00-0202-EU
WOLF 91 Power for Home & Office A-AD00-0402-BS


我想根据字段Material和model、name同时分组,条件:group by substring(Material,1,length(Material)-2),model,name
但却没有想要的效果。

想要的结果如下,SQL如何写呢?请帮忙,感谢。
name product_id model Material
TYLER 1 Armband for phone A-AB00P133A-FT01
TYLER 7 Armband for phone A-AB00P146A-FT01
TYLER 49 Armband for phone A-AB00P162A-FT01
HIPPO 85 Power for Home & Office A-AD00-0002-EU
KUGA 88 Power for Home & Office A-AD00-0202-EU
WOLF 91 Power for Home & Office A-AD00-0402-BS
...全文
205 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwx840723 2015-04-22
  • 打赏
  • 举报
回复
谢谢版主、 我再琢磨下。
ACMAIN_CHM 2015-04-17
  • 打赏
  • 举报
回复
引用 4 楼 wwx840723 的回复:
谢谢,为啥我的那种写法不行呢?
至少请楼主把你的SQL语句贴完整出来吧。另外不行是指什么? 产生的结果什么样? 问题说明越详细,回答也会越准确!参见如何提问。(提问的智慧
wwx840723 2015-04-17
  • 打赏
  • 举报
回复
谢谢,为啥我的那种写法不行呢?
引用 2 楼 ACMAIN_CHM 的回复:
mysql> select * from ta;
+-------+------------+-------------------------+------------------+
| name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          2 | Armband for phone       | A-AB00P133A-FT02 |
| TYLER |          3 | Armband for phone       | A-AB00P133A-FT03 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |          8 | Armband for phone       | A-AB00P146A-FT02 |
| TYLER |          9 | Armband for phone       | A-AB00P146A-FT03 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| TYLER |         50 | Armband for phone       | A-AB00P162A-FT02 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| HIPPO |         86 | Power for Home & Office | A-AD00-0002-ES   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
12 rows in set (0.00 sec)

mysql> select *
    -> from ta
    -> group by name,model,left(Material,length(Material)-2)
    -> order by product_id;
+-------+------------+-------------------------+------------------+
| name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
6 rows in set (0.00 sec)

mysql>
WWWWA 2015-04-17
  • 打赏
  • 举报
回复
mysql> SELECT * FROM TTLA;
+-------+------------+-------------------------+------------------+
| Name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          2 | Armband for phone       | A-AB00P133A-FT02 |
| TYLER |          3 | Armband for phone       | A-AB00P133A-FT03 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |          8 | Armband for phone       | A-AB00P146A-FT02 |
| TYLER |          9 | Armband for phone       | A-AB00P146A-FT03 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| TYLER |         50 | Armband for phone       | A-AB00P162A-FT02 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| HIPPO |         86 | Power for Home & Office | A-AD00-0002-ES   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
12 rows in set (0.00 sec)

mysql> SELECT * FROM TTLA A WHERE NOT EXISTS(
    -> SELECT 1 FROM TTLA WHERE A.`Name`=`Name`
    -> AND A.`model`=`model`
    -> AND SUBSTRING(A.Material,1,LENGTH(A.Material)-2)=
    -> SUBSTRING(Material,1,LENGTH(Material)-2)
    -> AND A.`product_id`>`product_id`
    -> );
+-------+------------+-------------------------+------------------+
| Name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
6 rows in set (0.00 sec)

mysql>
ACMAIN_CHM 2015-04-16
  • 打赏
  • 举报
回复
mysql> select * from ta;
+-------+------------+-------------------------+------------------+
| name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          2 | Armband for phone       | A-AB00P133A-FT02 |
| TYLER |          3 | Armband for phone       | A-AB00P133A-FT03 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |          8 | Armband for phone       | A-AB00P146A-FT02 |
| TYLER |          9 | Armband for phone       | A-AB00P146A-FT03 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| TYLER |         50 | Armband for phone       | A-AB00P162A-FT02 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| HIPPO |         86 | Power for Home & Office | A-AD00-0002-ES   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
12 rows in set (0.00 sec)

mysql> select *
    -> from ta
    -> group by name,model,left(Material,length(Material)-2)
    -> order by product_id;
+-------+------------+-------------------------+------------------+
| name  | product_id | model                   | Material         |
+-------+------------+-------------------------+------------------+
| TYLER |          1 | Armband for phone       | A-AB00P133A-FT01 |
| TYLER |          7 | Armband for phone       | A-AB00P146A-FT01 |
| TYLER |         49 | Armband for phone       | A-AB00P162A-FT01 |
| HIPPO |         85 | Power for Home & Office | A-AD00-0002-EU   |
| KUGA  |         88 | Power for Home & Office | A-AD00-0202-EU   |
| WOLF  |         91 | Power for Home & Office | A-AD00-0402-BS   |
+-------+------------+-------------------------+------------------+
6 rows in set (0.00 sec)

mysql>
wwx840723 2015-04-16
  • 打赏
  • 举报
回复
就是先通过字段Material(剔除最后2位)分组,然后再根据name和model来分组。 求大牛帮忙。谢谢。

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧