我正在尝试join
两个表,但问题是在第二个表中,与表1相同的值带有前缀(此表是在 opencart < / strong>安装-演示数据):
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 中,它在{{1 }},其前缀为query
,然后为ID category_id=
(如果类别笔记本电脑x为2)。
有人可以帮助我了解在这种情况下如何加入此表吗?
到目前为止,我一直在尝试像这样添加x
+:
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
PSS也有ON 'category_id=' + a.category_id
,所以我不知道我是否可以使用product_id
,但是我在考虑它,对其进行了搜索,但找不到使它起作用的方法。 / p>
谢谢! D:
答案 0 :(得分:1)
将嵌套的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 |
答案 1 :(得分:1)
在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
。
希望这可以帮助您解决问题!