SQL - 选择其子行的列包含特定字符串的行

时间:2014-02-01 07:32:51

标签: sql

例如:

RouteID    StopName 
1           stop_1 
1           stop_2
1           stop_3 
2           stop_1 
2           stop_2 
3           stop_4 
4           stop_5

我想选择一个名为'stop_1'的路线,我希望结果如下:

RouteID    StopName 
 1           stop_1 
 1           stop_2
 1           stop_3 
 2           stop_1 
 2           stop_2 

===============================================

修改

RouteID中的Route怎么样? 而StopName来自表格Stop?实际上,上表是他们的关系表。

先谢谢!

4 个答案:

答案 0 :(得分:1)

您的修改新答案

同样,假设routes表名为Routes,并且您的关系表名为RouteStops

SELECT * FROM Routes r
JOIN RouteStops rs ON rs.RouteID = r.RouteID
WHERE rs.StopName = 'stop_1'

旧答案:

为了举例,我假设你的表名是Routes

SELECT * FROM Routes r
JOIN Routes r2 ON r.RouteID = r2.RouteID
WHERE r2.StopName = 'stop_1'

每当路由包含stop_1然后列出所有路由条目时,我基本上都会自己加入表。

答案 1 :(得分:0)

您可以使用内部查询来选择路径:

select r.RouteID, s.StopName from route r
inner join stop s on r.StopID = s.StopID
where RouteID in
  (select t1.RouteID from route t1
  where exists (select * from stop s2 where t1.StopID = s2.StopID and s2.StopName = 'stop_1'))
order by r.RouteID, s.StopName

SQL Fiddle demo

答案 2 :(得分:0)

新答案:

假设您希望从预期结果中获取与stop_1共享相同RouteID的行,我将执行以下操作:

SELECT * FROM YOUR_TABLE_NAME
WHERE RouteID IN 
(
SELECT

RouteID

FROM YOUR_TABLE_NAME

WHERE StopName = 'stop_1'
)

旧答案:IGNORE,KEPT仅仅是评论

在oracle语法中,您可以使用Sub String函数。它需要第一个输入你想要使用的字符串,第二个是起始位置,最后一个是长度,所以1 -----------是12个字符长,语句将是以下< / p>

substr(your_column, 12, LENGTH(your_column) - 12)

现在可以使用以下逻辑:

SELECT
Your desired values to get

FROM
(
SELECT

substr(your_column, 1, 1) AS ID, substr(your_column, 12, LENGTH(your_column) - 12) AS VALUE

FROM YOUR TABLE
)

答案 3 :(得分:0)

试试这个

SELECT ROUTID 
FROM Routes R
JOIN Stop S ON R.RouteID = S.RouteID
WHERE S.StopName IN ('stop_1 ','stop_2','stop_3')