Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何连接记录中子字符串上的表?_Sql_Database_Postgresql_Amazon Redshift - Fatal编程技术网

Sql 如何连接记录中子字符串上的表?

Sql 如何连接记录中子字符串上的表?,sql,database,postgresql,amazon-redshift,Sql,Database,Postgresql,Amazon Redshift,我有一个将名称与帐户ID关联的表,如下所示 **Accounts** name account_id 另一个类似的表将信息与帐户uri相关联 **Info** information account_uri 帐户uri如下所示:/some/random/path/123456/random数字 其中,123456是与用户关联的账户id 我如何连接这些表,并得到如下结果 **results** name information 这是一个亚马逊红移/postgresql数据库。谢谢你的建议 虽

我有一个将名称与帐户ID关联的表,如下所示

**Accounts**
name
account_id
另一个类似的表将信息与帐户uri相关联

**Info**
information
account_uri
帐户uri如下所示:/some/random/path/123456/random数字

其中,123456是与用户关联的账户id

我如何连接这些表,并得到如下结果

**results**
name
information

这是一个亚马逊红移/postgresql数据库。谢谢你的建议

虽然效率不高,但您可以:

select a.name, i.information
from accounts a join
     info i
     on i.account_uri like '%/' || a.account_id;

不幸的是,使用这种数据结构很难利用索引。

这样做效率不高,但您可以:

select a.name, i.information
from accounts a join
     info i
     on i.account_uri like '%/' || a.account_id;

不幸的是,使用这种数据结构很难利用索引。

这样做效率不高,但您可以:

select a.name, i.information
from accounts a join
     info i
     on i.account_uri like '%/' || a.account_id;

不幸的是,使用这种数据结构很难利用索引。

这样做效率不高,但您可以:

select a.name, i.information
from accounts a join
     info i
     on i.account_uri like '%/' || a.account_id;

不幸的是,使用这种数据结构很难利用索引。

如果您不能将
帐户id
放在Info表中,这将起作用:

SELECT A.Name,
  I.Information
FROM Information I
JOIN Account A
  ON A.account_id = REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
反向(…)用于创建LastIndexOf函数

可能只想做:

SELECT REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
FROM Information
查看子字符串/反向是否获取整个帐户id

这应该找到“/”之间的第二个字符串

SUBSTRING(REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))),0,CHARINDEX('/',REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))))

如果您无法将
帐户\u id
放入信息表中,则此操作有效:

SELECT A.Name,
  I.Information
FROM Information I
JOIN Account A
  ON A.account_id = REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
反向(…)用于创建LastIndexOf函数

可能只想做:

SELECT REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
FROM Information
查看子字符串/反向是否获取整个帐户id

这应该找到“/”之间的第二个字符串

SUBSTRING(REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))),0,CHARINDEX('/',REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))))

如果您无法将
帐户\u id
放入信息表中,则此操作有效:

SELECT A.Name,
  I.Information
FROM Information I
JOIN Account A
  ON A.account_id = REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
反向(…)用于创建LastIndexOf函数

可能只想做:

SELECT REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
FROM Information
查看子字符串/反向是否获取整个帐户id

这应该找到“/”之间的第二个字符串

SUBSTRING(REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))),0,CHARINDEX('/',REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))))

如果您无法将
帐户\u id
放入信息表中,则此操作有效:

SELECT A.Name,
  I.Information
FROM Information I
JOIN Account A
  ON A.account_id = REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
反向(…)用于创建LastIndexOf函数

可能只想做:

SELECT REVERSE(SUBSTRING(REVERSE([account_uri]),0,CHARINDEX('/',REVERSE(account_uri))))
FROM Information
查看子字符串/反向是否获取整个帐户id

这应该找到“/”之间的第二个字符串

SUBSTRING(REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))),0,CHARINDEX('/',REVERSE(SUBSTRING(REVERSE([account_uri]),CHARINDEX('/',REVERSE(account_uri)))))
另一个解决方案

SELECT a.name, i.information
FROM accounts AS a
INNER JOIN info AS i ON SUBSTRING_INDEX(i.account_url, '/', -1) = a.account_id  

旁注:这根本不是一个合适的结构;)我不确定这是否适用于PostgreSQL,因为子字符串的索引函数。我真的没有注意到这与PostgreSQL有关

另一个解决方案

SELECT a.name, i.information
FROM accounts AS a
INNER JOIN info AS i ON SUBSTRING_INDEX(i.account_url, '/', -1) = a.account_id  

旁注:这根本不是一个合适的结构;)我不确定这是否适用于PostgreSQL,因为子字符串的索引函数。我真的没有注意到这与PostgreSQL有关

另一个解决方案

SELECT a.name, i.information
FROM accounts AS a
INNER JOIN info AS i ON SUBSTRING_INDEX(i.account_url, '/', -1) = a.account_id  

旁注:这根本不是一个合适的结构;)我不确定这是否适用于PostgreSQL,因为子字符串的索引函数。我真的没有注意到这与PostgreSQL有关

另一个解决方案

SELECT a.name, i.information
FROM accounts AS a
INNER JOIN info AS i ON SUBSTRING_INDEX(i.account_url, '/', -1) = a.account_id  



旁注:这根本不是一个合适的结构;)我不确定这是否适用于PostgreSQL,因为子字符串的索引函数。我真的没有注意到这与PostgreSQL有关

你所有的ID都是6位数吗?在5到7之间的任意位置digits@johncorser我相信Mihai想说的是如果ID和uri匹配是的,帐户\u id与帐户\u uri中的所有id的uri号匹配6位数字?介于5和7之间的任意位置digits@johncorser我相信Mihai想说的是如果ID和uri匹配是的,帐户\u id与帐户\u uri中的所有id的uri号匹配6位数字?介于5和7之间的任意位置digits@johncorser我相信Mihai想说的是如果ID和uri匹配是的,帐户\u id与帐户\u uri中的所有id的uri号匹配6位数字?介于5和7之间的任意位置digits@johncorser我相信Mihai想要了解的是,如果ID与uri号码匹配,那么帐户ID与uri号码匹配!现在我得到一个空集。这可能与表格本身有关,因此我将尝试解决这一问题,并在我确定其有效后立即将其标记为已接受。好的,我将在信息表格上选择(添加)反向,以确保结果得到正确的值啊,问题是帐户uri的格式实际上是/path/to/123456/randomNumbers,其中123456是帐户uri。我将修改这个问题。你知道怎么加入吗?如果它合并了数据,丑八怪就可以了!谢谢你的帮助。如果我弄明白了,我会在这里发布。谢谢!现在我得到一个空集。这可能与表格本身有关,因此我将尝试解决这一问题,并在我确定其有效后立即将其标记为已接受。好的,我将在信息表格上选择(添加)反向,以确保结果得到正确的值啊,问题是帐户uri的格式实际上是/path/to/123456/randomNumbers,其中123456是帐户uri。我将修改这个问题。你知道怎么加入吗?如果它合并了数据,丑八怪就可以了!谢谢你的帮助。如果我弄明白了,我会在这里发布。谢谢!现在我得到一个空集。这可能与表格本身有关,因此我将尝试解决这一问题,并在我确定其有效后立即将其标记为已接受。好的,我将在信息表格上选择(添加)反向,以确保结果得到正确的值啊,问题是帐户uri的格式实际上是/path/to/123456/randomNumbers,其中123456是帐户uri。我将修改这个问题。你知道怎么加入吗?如果它合并了数据,丑八怪就可以了!谢谢你的帮助。如果我弄明白了,我会的