最近公司同事碰到需求,實現一個功能,想用一個sq語句實現,他讓我看看如何實現sql。因爲前期作培訓時說到儘可能減小和數據庫的交互,能一條sql取出來就不用兩次sql語句:sql
CREATE TABLE [dbo].[zping.com](
[id] [varchar](32) NOT NULL,
[objid] [varchar](32) NOT NULL,
[objtype] [tinyint] NULL,
[config] [varchar](256)
) 數據庫
具體要求:spa
表[zping.com]中存放數據:id爲惟一,objid存放是機構id,objtype存放的是機構類型,config字段存放的是排序
具體業務數據。select
objid存放的可能機構id(總公司,分公司,辦事處,表明處)id,只能一個,objtype存放的是機構的數字sql語句
爲(總公司爲1,分公司爲2,辦事處爲3,表明處爲4)總結
數據庫裏的數據多是4個id的數據都有,也可能都沒有,也多是隻有其中幾個機構數據
業務要求:前臺傳入機構id(總公司,分公司,辦事處,表明處id),只能返回一條數據top
要求若是有總公司,取出總公司,若是沒總公司,若是有分公司,取分公司...... 若是都沒有則不取。db
select top 1 [config] from ( select * from [selfcustom] where objid in('66','77') )
t order by objtype asc
這裏主要用到了order by排序功能實現若是有總公司,就去總公司,若是有則去取分公司等。並經過top實現最多取出一條的目的。