國立臺北科技大學 自動化科技學研究所

SQL寫法 → 同個表格 SELECT 很多次,都不同條件

2013年6月18日 16:44
SQL寫法 → 同個表格 SELECT 很多次,都不同條件 是真的要一直重複下 SQL 嗎? 還是能夠下一次 SQL, 然後把內容都寫在裡面, 最後全部跑出來結果。
0
回應 11
文章資訊
共 11 則回應
國立臺北科技大學 資訊工程學系
妳要不要描述的更詳細一點? 應該可以用子查詢來下SQL Select A.attr1,B.attr2 FROM (
國立臺北科技大學 資訊工程學系
Select attr1 FROM TABLE WHERE XXX AS A , Select attr2 FROM TABLE WHERE XXX AS B ) (該死按錯分兩篇PO)
國立臺灣科技大學 工業管理研究所
描述詳細一點~~
原 PO - 國立臺北科技大學 自動化科技學研究所
我要連續對同個表格 A, 做大約 300 次的計算總數, 每次都是後面的條件不同, 差一點點而已, 我是想說把 300 次都串在同個 SQL, 只連線一次, 就把結果搜尋出來結果。 select count(*) from A where 1 = 1 and B = '3' and C = '4' select count(*) from A where 1 = 1 and B = '4' and C = '5' select count(*) from A where 1 = 1 and B = '9' and C = '7' 以上三段各別執行可以, 我把兩段組再一起就不行了, 如下所示: select count(*) as AA, (select count(*) from A where 1 = 1 and B = '4' and C = '5' ) as BB from A where 1 = 1 and B = '9' and C = '7'
國立臺灣大學 政治學系
可以把那些條件全部or起來 這樣只要一次SQL就夠了 select count(*) from A where (條件1) or (條件2) or (條件3)......
國立臺北科技大學 資訊工程學系
政治學系也會SQL 高手在民間~阿 select count(*) from A group by (B,C) where COND1 or COND2(這部分只能用CODE 去串接299次
國立交通大學 資訊管理與財務金融學系
你是要的結果是300rows 還是1筆row 300columns? 300rows可以用union all串300個SQL 300columns比較難,oracle db可以用decode或case把where條件改寫,其它db另請高明
國立臺灣大學 資訊工程學系
你應該觀察一下這一大堆的讀取是要讀取什麼 如果這次讀取是對一張table 拿出了幾乎100%的資料 我建議你就直接select * from table就好了 剩下用程式做運算 不要都依賴sql 程式大概是.. int array[][]; foreach data in output{ array[data.B][data.C]++; }
國立臺灣大學 政治學系
300筆這種資料... where 1 = 1 and B = '3' and C = '4' 這些不同的條件的數字 是否可以用數學式子來表示? 或者彼此之間沒有任何關係? btw,如果真的有這麼多不同的條件 可以先把sql的指令用個string來表示 然後把條件用array存起來 再append到sql的string上面 例如 string sql_string="select count(*) from A where" array conditions={"condition1","condition2","condition3".....} foreach conditions as c sql_string+=c if(c!=conditions.last) sql_string+=" or " sql->query(sql_string) 這樣寫的程式擴充性會比較好 之後要修改或套用到其他地方也比較方便 或者,如8樓所說 如果執行全部sql的cost大於把表格ㄧ次整個抓下來的cost 那直接抓下來再處理資料會比較快
國立臺灣大學 政治學系
突然發現在這邊貼code不能縮牌 更正一下 string sql_string="select count(*) from A where" array conditions={"condition1","condition2","condition3".....} foreach( conditions as c){ sql_string+=c if(c!=conditions.last){ sql_string+=" or " } } sql->query(sql_string)
國立高雄第一科技大學 工程科技學研究所
建議還是寫個for 迴圈 分開去select吧! 不然你讀出來還是要分析資料。