[英]Joining tables with different value prefix
我正在嘗試join
兩個表,但問題是在第二個表中,與表1相同的值帶有前綴(此表在opencart安裝后生成-演示數據):
Table 1: category
-----------------------------
| category_id | category_name |
|-----------------------------|
| 1 | Components |
| 2 | Laptops |
Table 2: seo_url
------------------------------------------
| seo_url_id | query | keyword |
|------------------------------------------|
| 35 | category_id=1 | components |
| 78 | category_id=2 | laptops |
因此,類別的ID在表1中的列category_id
中,並且是一個數字,但在表2中 ,在列query
並且其前綴是category_id=
,然后是id x
(如果類別筆記本電腦x為2) 。
有人可以幫助我了解在這種情況下如何加入此表嗎?
到目前為止,我試圖像這樣添加category_id=
+:
SELECT a.id, a.category_name, b.query
FROM category AS a
INNER JOIN seo_url AS b
ON a.category_id = 'category_id=' + b.query
PS我試過ON 'category_id=' + a.category_id
PSS也有product_id
所以我不知道我是否可以使用LIKE
但我正在考慮,搜索並找不到使它工作的方法。
謝謝! D:
將嵌套的REVERSE
函數與+ 0
一起使用可以自動“解析”整數。
詢問
SELECT
REVERSE(REVERSE('category_id=2') + 0)
UNION ALL
SELECT
REVERSE(REVERSE('category_id=21') + 0)
結果
| REVERSE(REVERSE('category_id=2') + 0) |
|---------------------------------------|
| 2 |
| 21 |
參見演示http://sqlfiddle.com/#!9/340e01/530
在查詢中使用它。
詢問
SELECT a.category_id, a.category_name, b.query
FROM category AS a
INNER JOIN seo_url AS b
ON a.category_id = REVERSE(REVERSE(b.query) + 0)
結果
| category_id | category_name | query |
|-------------|---------------|---------------|
| 1 | Components | category_id=1 |
| 2 | Laptops | category_id=2 |
在MySQL中,使用可以附加字符串和數字的函數CONCAT(...)
,該函數與該數據庫的不同版本兼容。
您的固定查詢為:
SELECT a.id, a.category_name, b.query
FROM category AS a
INNER JOIN seo_url AS b
ON CONCAT('category_id=', a.category_id) = b.query;
您的表seo_url
在字段query
的值中已經具有'category_id =',因此您無需附加它。
另外,我建議您使用更具代表性的名稱來命名表別名,而不要使用a
和b
。
希望這可以幫助您解決問題!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.