[英]MySQL JOIN on using substring from one table
我試圖在 MySQL 中將兩個表連接在一起。 我需要根據一個字段(表 a:ID)中的完整字符串和另一個表(表 b:caseID)中的子字符串進行連接。 在這篇文章的底部可以看到表格結構的模型。 ID 和 caseID 被定義為唯一的。
我正在尋找的輸出類似於:
|-------------|--------------|------------|
| ID | name | age |
|-------------|--------------|------------|
| 1 | Bob | 22 |
| 2 | Bill | 23 |
| 3 | Ben | 24 |
|-------------|--------------|------------|
我知道如何根據分隔符提取子字符串:
SELECT SUBSTRING(caseID, LOCATE('-', caseID)+1, LENGTH(caseID)) AS ExtractString FROM b
但我不清楚如何將它與通常的 SQL JOIN 語句結合起來以返回所有連接的記錄。 我不斷收到諸如“返回多於一行”之類的錯誤。
非常感謝任何幫助。
表一:
|-------------|--------------|
| ID | name |
|-------------|--------------|
| 1 | Bob |
| 2 | Bill |
| 3 | Ben |
|-------------|--------------|
表b:
|-------------|--------------|
| caseID | age |
|-------------|--------------|
| 24-1 | 22 |
| 24-2 | 23 |
| 24-3 | 24 |
|-------------|--------------|
SELECT * FROM a LEFT JOIN b ON a.ID = SUBSTRING(b.caseID, LOCATE('-', b.caseID)+1, LENGTH(b.caseID))
SELECT *
FROM a
JOIN b ON a.ID = SUBSTRING_INDEX(b.caseID, '-', -1)
典型的,只要我提出問題,我就會找出答案!
SELECT a.*, b.*
FROM a
JOIN b
ON b.id = SUBSTRING(a.caseID, LOCATE('-', a.caseID)+1, LENGTH(a.caseID))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.