mysql join提取的数字

时间:2012-06-08 17:53:48

标签: mysql regex join

我有一个像这样的'大'表

    id  user type comment
    6   1    A    id '3' - #8
    7   1    A    id '3' - #9
    8   3    B    
    9   3    B  

我想在哈希之后提取数字并将其与id列连接以具有以下内容(当单引号之间的数字等于用户时)

    id1 id2  user  type
    6   8    3     B
    7   9    3     B 

1 个答案:

答案 0 :(得分:0)

创建一个表的副本,它的名称很重要,并插入你给我们的那些值:

mysql> create table bigtable (id int, user_id int, type varchar(10), comment varchar(30));
Query OK, 0 rows affected (0.04 sec)

mysql> insert into bigtable values (6,1, 'A', 'id 3 - #8'),(7,1,'A', 'id 3 - #9'),(8,3, 'B','' ),(9,3, 'B','');
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0

mysql> select * from bigtable;
+------+---------+------+-----------+
| id   | user_id | type | comment   |
+------+---------+------+-----------+
|    6 |       1 | A    | id 3 - #8 |
|    7 |       1 | A    | id 3 - #9 |
|    8 |       3 | B    |           |
|    9 |       3 | B    |           |
+------+---------+------+-----------+
4 rows in set (0.00 sec)

我做了一个自我加入并使用substrn_index函数:

mysql> select b1.id,b2.id,b1.user_id,b1.type 
from bigtable as b1 join bigtable as b2 
on b1.id=SUBSTRING_INDEX(b2.COMMENT,'#',-1);
+------+------+---------+------+
| id   | id   | user_id | type |
+------+------+---------+------+
|    8 |    6 |       3 | B    |
|    9 |    7 |       3 | B    |
+------+------+---------+------+
2 rows in set (0.00 sec)

我希望这有助于你