回答
int id = ...
var exists = conn.ExecuteScalar<bool>("select count(1) from Table where [email protected]", new {id});
應該工作...
你可以有你的查詢返回一個bool:
[Test]
public void TestExists()
{
var sql = @"with data as
(
select 1 as 'Id'
)
select CASE WHEN EXISTS (SELECT Id FROM data WHERE Id = 1)
THEN 1
ELSE 0
END AS result
from data ";
var result = _connection.Query<bool>(sql).FirstOrDefault();
Assert.That(result, Is.True);
}
應該工作,但是我覺得你有點過於複雜吧... –
同意。 「伯爵」是一個巧妙的把戲! –
不,不同意。 'Count'處理整個表,因爲查詢優化器不能排除你的where子句的多個匹配項。一旦找到第一個,'Exists'就會返回。當你的表中有很多行時,這種差別可能會很明顯,特別是如果這個查詢經常重複。舉個例子,看看我發現的這篇博文 - http://sqlblog.com/blogs/andrew_kelly/archive/2007/12/15/exists-vs-count-the-battle-never-ends.aspx – Volkirith
我覺得這可能有一點點的開銷更少,因爲沒有函數調用或數據類型轉換:
int id = ...
var exists = connection.Query<object>(
"SELECT 1 WHERE EXISTS (SELECT 1 FROM MyTable WHERE ID = @id)", new { id })
.Any();
另一個選項將運行重複記錄,即不查詢表格的ID Ë
bool exists = connection.ExecuteScalar<int>(
"select count(1) from Table where [email protected]", new { value = val})
> 0;
const string sql = "SELECT CAST(CASE WHEN EXISTS (SELECT 1 FROM MyTable WHERE Id = @Id) THEN 1 ELSE 0 END as BIT)";
bool exists = db.ExecuteScalar<bool>(sql, new { Id = 123 });
- 1. Cakephp檢查是否存在記錄
- 2. rethinkdb檢查是否存在記錄
- 3. 檢查是否存在記錄
- 4. 檢查mysql表中是否存在不存在的記錄
- 5. 檢查保存前是否存在記錄
- 6. MySQL的存儲過程,檢查是否存在記錄
- 7. 查詢檢查是否存在記錄和列空
- 8. VBA檢查是否存在記錄如果不是附加
- 9. 如何檢查在Access數據庫中是否存在記錄
- 10. 檢查記錄訂閱是否已在CloudKit中存在
- 11. 檢查記錄是否存在(即時)在MVC
- 12. 檢查是否在西納特拉存在記錄/ DataMapper的
- 13. Ruby&Datamapper檢查記錄是否存在,以及在哪裏?
- 14. SVNKit - 檢查目錄是否存在
- 15. 檢查lua中是否存在目錄?
- 16. Talend - 檢查目錄是否存在
- 17. 嵌入式SQL,如何檢查是否存在記錄
- 18. 如何使用JPA檢查記錄是否存在
- 19. Rails檢查包含NULL值的記錄是否存在?
- 20. 檢查mySQL中是否存在記錄時的性能問題?
- 21. 如何檢查數據庫記錄是否存在?
- 22. 如何使用jQuery Validate Plugin檢查記錄是否存在?
- 23. 檢查是否存在使用記錄小巧玲瓏ORM
- 24. 檢查記錄是否存在使用DLookup(有多個標準)
- 25. Kohana 3.2 ORM檢查集合中是否存在記錄
- 26. 檢查Rails中是否存在記錄(來自ID數組)?
- 27. 檢查Rails中是否存在關聯記錄?
- 28. 如何檢查數據視圖中是否存在記錄? C#
- 29. 主義 - 檢查是否存在記錄基於現場
- 30. 回報率 - 檢查是否存在記錄之前建立
好又簡單! – webworm
@webworm注意,如果你有超過1個記錄的關鍵,它會變得棘手,但是......你應該沒有:) –
只需使用COUNT(DISTINCT 1)'確保你得到1的回答(true ),即使你有多個具有相同ID /密鑰的記錄。誠然,這應該是一個邊緣案例。 – Caltor