回答
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. 檢查表中是否存在記錄
- 2. 如何檢查記錄是否存在
- 3. 檢查記錄是否存在外鍵
- 4. php mysql檢查是否存在記錄
- 5. Cakephp檢查是否存在記錄
- 6. 檢查記錄是否存在SQL PhoneGap
- 7. 檢查是否存在記錄
- 8. rethinkdb檢查是否存在記錄
- 9. 如何檢查是否存在之前,在Dapper讀ORM
- 10. 檢查在保存父記錄之前是否存在匹配的子記錄
- 11. 檢查mysql表中是否存在不存在的記錄
- 12. 檢查保存前是否存在記錄
- 13. MySQL的存儲過程,檢查是否存在記錄
- 14. 查詢檢查是否存在記錄和列空
- 15. 檢查模型,以查看Yii中是否存在記錄-PHP
- 16. SELECT查詢的性能檢查表中是否存在記錄
- 17. PHP中用於檢查記錄是否存在的SQL查詢
- 18. 檢查記錄是否在分貝 - php
- 19. 檢查會話是否記錄在symfony2
- 20. VBA檢查是否存在記錄如果不是附加
- 21. 在vb.net中添加記錄並檢查是否存在使用elseif的記錄
- 22. 檢查記錄訂閱是否已在CloudKit中存在
- 23. 檢查是否在西納特拉存在記錄/ DataMapper的
- 24. 如何在ssis中檢查是否存在記錄
- 25. 如何檢查在Access數據庫中是否存在記錄
- 26. 檢查記錄是否存在(即時)在MVC
- 27. Ruby&Datamapper檢查記錄是否存在,以及在哪裏?
- 28. 檢查記錄存在
- 29. Laravel - 檢查記錄存在
- 30. 如何檢查目錄是否存在?
好又簡單! – webworm
@webworm注意,如果你有超過1個記錄的關鍵,它會變得棘手,但是......你應該沒有:) –
只需使用COUNT(DISTINCT 1)'確保你得到1的回答(true ),即使你有多個具有相同ID /密鑰的記錄。誠然,這應該是一個邊緣案例。 – Caltor