admin

在MySQL中映射选定的值

sql

我有两个表中的2组数据,我需要加入表中

表格1

id     qid     choice               
--------------------------
11     2020     Item 1
12     2020     Item 2
13     2020     Item 14

table_2

rid    qid     question
---------------------------
1001   2020    1.I love apple
1002   2020    2.I love orange
1003   2020    14.I hate lemon

输出

id    rid     qid     choice       question
-------------------------------------------------
11    1001    2020    Item 1      1.I love apple
12    1002    2020    Item 2      2.I love orange
13    1003    2020    Item 14     14.I hate lemon

表_2中“问题”列的格式必须以

1.XXXX , 2.XXXX , 14.XXXX until 20.XXXXXX

我认为在“。”之前获取数字。作为加入条件。但是,如何获得数量或其他更好的解决方案呢?


阅读 145

收藏
2021-06-07

共1个答案

admin

您应该更改当前表的数据结构。但是对于您当前的数据结构,您可以使用以下棘手的查询(假设的模式table_1.choice始终为Item XX):

SELECT t1.id, t2.rid, t1.qid, t1.choice, t2.question
  FROM Table1 t1
  JOIN Table2 t2
    ON RIGHT(t1.choice, LENGTH(t1.choice) - 5) 
     = LEFT(t2.question, LOCATE('.',t2.question) - 1);

输出:

| ID |  RID |  QID |  CHOICE |        QUESTION |
|----|------|------|---------|-----------------|
| 11 | 1001 | 2020 |  Item 1 |  1.I love apple |
| 12 | 1002 | 2020 |  Item 2 | 2.I love orange |
| 13 | 1003 | 2020 | Item 14 | 14.I hate lemon |

看到SQLFiddle

2021-06-07