连接具有不同值前缀的表

pxy2qtax  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(621)

我在试着 join 两个表,但问题是,在第二个表中,与表1中相同的值有一个前缀(此表是在opencart安装-演示数据之后生成的):

  1. Table 1: category
  2. -----------------------------
  3. | category_id | category_name |
  4. |-----------------------------|
  5. | 1 | Components |
  6. | 2 | Laptops |
  7. Table 2: seo_url
  8. ------------------------------------------
  9. | seo_url_id | query | keyword |
  10. |------------------------------------------|
  11. | 35 | category_id=1 | components |
  12. | 78 | category_id=2 | laptops |

所以类别的id在列中 category_id 在表1中,它是一个数字,但在表2中,它在列中 query 它的前缀是 category_id= 然后是身份证 x (如果笔记本电脑x为2)。
有人能帮我理解在这种情况下我是如何加入这张table的吗?
到目前为止我想补充 category_id= +像这样:

  1. SELECT a.id, a.category_name, b.query
  2. FROM category AS a
  3. INNER JOIN seo_url AS b
  4. ON a.category_id = 'category_id=' + b.query

p、 我试过了 ON 'category_id=' + a.category_id p、 美国也有 product_id 所以我不知道我能不能 LIKE 但我在想,在找,却找不到办法让它发挥作用。
谢谢您!d:是的

s6fujrry

s6fujrry1#

在mysql中,使用函数 CONCAT(...) 它可以附加字符串和数字,并且与该数据库的不同版本兼容。
您的固定查询是:

  1. SELECT a.id, a.category_name, b.query
  2. FROM category AS a
  3. INNER JOIN seo_url AS b
  4. ON CONCAT('category_id=', a.category_id) = b.query;

你的table seo_url 字段的值中已包含“category\u id=” query ,因此不需要附加它。
此外,我建议您使用更具代表性的名称来命名表别名,而不是使用 a 以及 b .
希望这能帮你解决问题!

jvlzgdj9

jvlzgdj92#

使用嵌套 REVERSE 具有的函数 + 0 自动“解析”出整数。
查询

  1. SELECT
  2. REVERSE(REVERSE('category_id=2') + 0)
  3. UNION ALL
  4. SELECT
  5. REVERSE(REVERSE('category_id=21') + 0)

结果

  1. | REVERSE(REVERSE('category_id=2') + 0) |
  2. |---------------------------------------|
  3. | 2 |
  4. | 21 |

请参见演示http://sqlfiddle.com/#!9/340e01/530号
在查询中使用它。
查询

  1. SELECT a.category_id, a.category_name, b.query
  2. FROM category AS a
  3. INNER JOIN seo_url AS b
  4. ON a.category_id = REVERSE(REVERSE(b.query) + 0)

结果

  1. | category_id | category_name | query |
  2. |-------------|---------------|---------------|
  3. | 1 | Components | category_id=1 |
  4. | 2 | Laptops | category_id=2 |

请参见演示http://sqlfiddle.com/#!9/ef5781/1号

展开查看全部

相关问题