没有表创建的SQL

时间:2015-01-13 19:41:21

标签: sql

是否有可能使用子查询进行字符串更改?

我无法在数据库上创建任何新表,只需阅读结果。

我的问题是这样的:有一个表T1有两列,C1和C2(以及其他列,但这些一起是键)。我必须得到所有条目C1,C2的列表,这样对C1,C2''不是T1中的条目,

C2'' = SELECT SUBSTRING_INDEX(C2, '\\', 1) AND CHARINDEX('\\',C2) > 0;

意思是,如果C2包含反斜杠,那么名称较短的条目"直到反斜杠"表中没有(如果C2不包含反斜杠,我无论如何都不会得到它。)

非常感谢您提前, khitron23

对不起。当然。

T1:

C1 |C2
abc|def
jkhk|abcde\\grt
lkjk|hkjhk\\kjg
khkh|khkhk\\ghh
jkhk|abcde
lkjl|hkjhk

结果:

C1|C2''
lkjk|hkjhk\\kjg
khkh|khkhk\\ghh

就是那些,因为没有

lkjk|hkjhk
khkh|khkhk

在初始表中。

服务器是http://quarry.wmflabs.org。 C1 | C2''表示列C1和列C2',它只是一个名称。 我真正想要的是这样的(对于知道wiki语法的人): 维基百科页面有两个关键列 - 命名空间+标题。 我想要识别没有首页的所有子页面(例如Portal:Biology \ answers \ 5)(作为Portal:Biology)。通常这是一个问题"忘记删除首页时删除首页"。 服务器可以读取维基百科表,但不能更改或创建新表。 非常感谢您提前

1 个答案:

答案 0 :(得分:0)

假设您不需要转义'\'char(取决于SQL引擎),下一个想法就可以了(a1和a2只是别名而不会混淆列):

select * 
from t1 as a1
where a1.c2 like '%\%'
and not exists (
    select * 
    from t1 as a2 
    where a1.c1 = a2.c1 
        and a1.c2 like a2.c2 + '\%'
)