大大毛 的筆記

            DDM's Note

          哪怕沒有辦法一定有說法,
          就算沒有鴿子一定有烏鴉,
          固執無罪 夢想有價,
          讓他們驚訝.

          posts - 14, comments - 23, trackbacks - 0, articles - 58
             :: 首頁 ::  :: 聯系 ::  :: 管理

          查詢投票的例子(向表中臨時插入特征列)

          Posted on 2006-08-15 18:23 大大毛 閱讀(211) 評論(0)  編輯  收藏 所屬分類: SQL

          ???問題(示例):
          ??????投票表vote,根據條件查詢 有效/失效/全部 的投票主題,是否有效的條件是將當前日期與投票的有效期進行比較
          vote表結構
          ??????示例數據:
          insert?into?vote?values?(?'topic01',dateadd(day,-2,getdate()),dateadd(day,2,getdate())?)
          insert?into?vote?values?(?'topic02',dateadd(day,-20,getdate()),dateadd(day,-10,getdate())?)
          ??????實現效果
          ?????????有效投票為 topic01?,無效投票為 topic02

          ???解決方法:
          自連接查詢1
          ???在使用自連接查詢時,使用判斷條件生成一個臨時的子表進行自連接。利用左/右連接時子表對應列為 null 的轉換從而達到在 vote 表中插入一個特征列的目的,忽略掉最后的 where 子句,手工在 select vote.* 處加入? ,isValid即可以看到效果。

          ???可以將SQL語句改寫成下面這樣,可以看得清楚一些。
          自連接查詢2

          ???也可以根據需要,改寫成子查詢語句:
          子查詢

          ???使用 exec vote_getAllVote 參數,即可演示效果(sqlServer2000)
          ???當然,生成兩個臨時表 validVote,invalidVote再聯合查詢?或者 用IF 加開關分開select也是可以的,這里就不贅述了。

          ???后記
          ??????SQL語法上并沒有規定解決問題只能使用一種方案,它采用了非常靈活的工作方式,因此具體使用哪一種解決方案取決于具體的應用及個人喜好。

          i am ddm

          主站蜘蛛池模板: 汉川市| 克什克腾旗| 田林县| 龙井市| 原阳县| 河曲县| 上蔡县| 北辰区| 海林市| 当涂县| 和平县| 普宁市| 宁乡县| 荆州市| 焦作市| 如皋市| 体育| 子长县| 阳东县| 瑞金市| 孝义市| 轮台县| 无棣县| 彭阳县| 舞钢市| 罗城| 通山县| 轮台县| 原平市| 大冶市| 台东县| 苏尼特右旗| 白银市| 抚顺县| 勃利县| 嵊州市| 诸暨市| 绍兴市| 云和县| 安图县| 通化市|