0
要看看是否有在我的數據庫託德我現在做到以下幾點:有沒有更簡單的方法來查看一個字段是否有一定的價值?
SELECT * FROM MyTable WHERE name='Todd' LIMIT 1
然後我檢查光標,看看它的大小== 1,有沒有辦法從返回一個0或1 select語句如果條件爲false或true,而不是字段列表?
要看看是否有在我的數據庫託德我現在做到以下幾點:有沒有更簡單的方法來查看一個字段是否有一定的價值?
SELECT * FROM MyTable WHERE name='Todd' LIMIT 1
然後我檢查光標,看看它的大小== 1,有沒有辦法從返回一個0或1 select語句如果條件爲false或true,而不是字段列表?
你可以做
SELECT COUNT(*) it_exists
FROM
(
SELECT 1
FROM MyTable
WHERE name = 'Todd'
LIMIT 1
) q;
一個內部的選擇保證LIMIT
應用。這意味着如果您假設成千上萬的匹配行數據庫引擎將停止並在第一個結果之後返回結果,而不是遍歷所有結果。
輸出
| it_exists | |-----------| | 1 |
下面是SQLFiddle演示
我的SQLite的技能是有點弱,是 'name_exists' 和 'q' 有什麼目的?它似乎沒有任何 –
'name_exists',或者更確切地說'it_exists'在答案的更新版本中是列別名,因此您可以將它作爲客戶端代碼中的其他列進行讀取。 'q'是子查詢的別名(內部選擇)。有一個很好的做法(某些數據庫系統,如MySQL或SQLServer如果沒有一個,會拋出異常)。它可以命名,但是你當然想要。 – peterm
這很有道理!感謝您的跟進,您的回答非常有幫助:) –