none
【求教SQL基础问题】一个SQL语句的写法问题,请达人指点~ RRS feed

  • 问题

  • 小的想实现一个效果,具体想实现的内容小的下面用一个错误的SQL语句来描述。劳烦达人帮忙指点正确的写法。先行谢过~~~

    sql = "select * from areaid,(select areaname+',' from area for xml path('') )as aaa where aaa like '%区%' ;"

    大概意思就是将一个表的相关字段列表拼接成一个字段。然后根据这个拼接成的字段来做条件得出符合条件的列表

    可惜where 不支持字段别名,直接在where字句中用拼接表字段也不行

    请路过的达人指点一条正确的写法~~~小的先行谢过~~~

    2011年8月28日 13:08

答案

  • 不知道這是不是你要的結果,請參考下列程式碼:

    declare @t table (col1 varchar(10))
    insert into @t values('a'),('b'),('c'),('d'),('e'),('f'),('g')
    --檢視原始資料
    select * from @t
    declare @list varchar(512)
    --組字串
    select @list = case when @list is null then col1 else @list + ',' + col1 end
    from @t
    --顯示結果
    select @list
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月29日 0:58
  • 不好意思,我可能誤會你的意思了,你看看是不是這樣:


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月29日 9:23

全部回复

  • 不知道這是不是你要的結果,請參考下列程式碼:

    declare @t table (col1 varchar(10))
    insert into @t values('a'),('b'),('c'),('d'),('e'),('f'),('g')
    --檢視原始資料
    select * from @t
    declare @list varchar(512)
    --組字串
    select @list = case when @list is null then col1 else @list + ',' + col1 end
    from @t
    --顯示結果
    select @list
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月29日 0:58
  • 先谢谢你的帮助~~

    大概是这个意思,只是我想在where中加上条件语句。不知道该如何实现~~ 劳烦在指点一下~多谢~

    2011年8月29日 7:10
  • 先谢谢你的帮助~~

    大概是这个意思,只是我想在where中加上条件语句。不知道该如何实现~~ 劳烦在指点一下~多谢~

    不曉得這樣是不是你要的。

    declare @t table (col1 varchar(10))
    insert into @t values('a'),('b'),('c'),('d'),('e'),('f'),('g')
    --檢視原始資料
    select * from @t
    declare @list varchar(512)
    --組字串
    select @list = case when @list is null then col1 else @list + ',' + col1 end
    from @t
    where col1 <= 'e' --在此加入WHERE條件
    --顯示結果
    select @list
    



    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月29日 7:24
  • 好像还有点不对,您上面给出的条件是对临时表中一行的一个字段进行限制。而我希望能够实现的是,对拼接成的这个字段进行条件筛选~

    劳烦再指点一下~多谢~:)

    2011年8月29日 8:56
  • 我想实现的大概意思就是,查询一个表中相关的字段,然后用另一个表的某个字段的所有行拼接成一个字段做条件筛选用。

    我上面的语句是无效的。但是想展示给大家的大概意思也写错了。稍微改一下:

    sql = "select areaid,(select areaname+',' from area for xml path('') )as aaa from area where aaa like '%区%' ;"


    大概就是获得两个一个字段,一个字段是这个表本身的,一个字段是另外一个表拼接而成的。然后用这个拼接而成的字段做条件查询~~~

    劳烦达人再帮忙指点下~先行谢过~
    2011年8月29日 9:09
  • 不好意思,我可能誤會你的意思了,你看看是不是這樣:


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/
    2011年8月29日 9:23
  • 我想实现的大概意思就是,查询一个表中相关的字段,然后用另一个表的某个字段的所有行拼接成一个字段做条件筛选用。

    我上面的语句是无效的。但是想展示给大家的大概意思也写错了。稍微改一下:

    sql = "select areaid,(select areaname+',' from area for xml path('') )as aaa from area where aaa like '%区%' ;"


    大概就是获得两个一个字段,一个字段是这个表本身的,一个字段是另外一个表拼接而成的。然后用这个拼接而成的字段做条件查询~~~

    劳烦达人再帮忙指点下~先行谢过~


    听起来要用sub query?

    sql = "Select * from (select areaid,(select areaname+',' from area for xml path('') )as aaa from area ) subTable where subTable.aaa like '%区%' ;"


    Shadowと愉快なコード達
    2011年8月29日 9:38
  • 非常感谢楼上两位达人的热心帮助~~~

    2011年8月30日 8:15