Mysql 当使用另一列中的字符串连接一列时,如何连接两个表?

Mysql 当使用另一列中的字符串连接一列时,如何连接两个表?,mysql,Mysql,我有两张桌子: Table a id | title 12 | category1 Table b id | link 45 | index.php&view=myview&id=12 表a id |标题 12 |类别1 表b id |链接 45 | index.php&view=myview&id=12 如何连接a.id=(b.link中的id)的表 Thanx您最好的方法是在表b中添加一个额外的列,并在最初添加记录时通过服务器端脚本添加id。它将使

我有两张桌子:

Table a id | title 12 | category1 Table b id | link 45 | index.php&view=myview&id=12 表a id |标题 12 |类别1 表b id |链接 45 | index.php&view=myview&id=12 如何连接a.id=(b.link中的id)的表


Thanx

您最好的方法是在表b中添加一个额外的列,并在最初添加记录时通过服务器端脚本添加id。它将使您的sql更快

您最好的方法是在表b中添加一个额外的列,并在最初添加记录时通过服务器端脚本添加id。它将使您的sql更快

SELECT *
FROM a JOIN b
   ON a.id = LEFT(REVERSE(b.link),LOCATE('=',REVERSE(b.link))-1)
  • 链接
  • 查找反向b链接上第一个出现的“=”()
  • 将反向b.link的部分从0提取到第一次出现“=”的位置减去1
  • 您也可以这样使用RIGHT:

    SELECT *
    FROM a JOIN b
       ON a.id = RIGHT(b.link,LOCATE('=',REVERSE(b.link))-1)
    
    第二个选项使用的函数少于第一个,应该比第一个快

    这是没有测试,但如果你的链接有所有相同的模式,它应该工作

  • 链接
  • 查找反向b链接上第一个出现的“=”()
  • 将反向b.link的部分从0提取到第一次出现“=”的位置减去1
  • 您也可以这样使用RIGHT:

    SELECT *
    FROM a JOIN b
       ON a.id = RIGHT(b.link,LOCATE('=',REVERSE(b.link))-1)
    
    第二个选项使用的函数少于第一个,应该比第一个快

    这没有经过测试,但如果您的链接具有所有相同的模式,它应该可以工作

    我会尝试以下方法:

    Table a
    id   |    title
    12   |    category1
    
    
    Table b
    id   |    link                          | a_id
    45   |    index.php&view=myview&id=12   | 12
    
    查询:

    Select * FROM a JOIN b ON a.id = b.a_id WHERE a.id = 12
    
    我想试试这个:

    Table a
    id   |    title
    12   |    category1
    
    
    Table b
    id   |    link                          | a_id
    45   |    index.php&view=myview&id=12   | 12
    
    查询:

    Select * FROM a JOIN b ON a.id = b.a_id WHERE a.id = 12
    

    我猜桌子是不能换的@yann,这是真的吗?我猜桌子是不可变的@yann,这是真的吗?W000这是一个奇特的解决方案,我喜欢这样:)我建议添加一个列,但如果这不是一个选项,这肯定是一个解决方案!这听起来很有希望。我会检查这个,这是一个奇特的解决方案,我喜欢这样:)我会建议添加一个列,但如果这不是一个选项,这肯定是解决方案!这听起来很有希望。我来看看