这可能是一个愚蠢的问题。我会感激任何帮助。
我正在尝试编写一个基于逻辑计算行数的查询,如下所示:
不计算其中username = @ username和friendsname = @friendsname和username = @friendsname和@friendsname = @username where status = 0
的行考虑下图中的表格:
查询应该返回1,因为id'18'和id'20'具有倒数值。这个查询将如何编写?
我编写了如下查询但不起作用:
bool flag = false;
StringBuilder query = new StringBuilder();
query.Append("SELECT Count(id) from friends where username=@username AND friend_username=@friend_username AND username = @friend_username AND friend_username = @username");
query.Append(" AND status=0");
using (SqlConnection con = new SqlConnection(Config.ConnectionString))
{
con.Open();
using (SqlCommand cmd = new SqlCommand(query.ToString(), con))
{
cmd.CommandType = CommandType.Text;
cmd.Parameters.Add(new SqlParameter("@username", username));
cmd.Parameters.Add(new SqlParameter("@friend_username", friendusername));
if (Convert.ToInt32(cmd.ExecuteScalar()) > 0)
flag = true;
}
}
return flag;
答案 0 :(得分:1)
如果我没弄错的话,你会根据你的条件计算出具有相应值的特定@username
和@friendusername
的行数。
下面的查询应该会有所帮助 - 我还没有测试过它!
SELECT COUNT(*) as reciprocal_values_no
FROM table_name tbl1
WHERE
username = @username
AND friend_username = @friendusername
AND status = 0
AND EXISTS (
SELECT 1 FROM table_name tbl2 WHERE tbl1.username = tbl2.friend_username AND tbl1.friend_username = tbl2.username )
答案 1 :(得分:0)
试试这个
select username,friend_username,status, count(*)
from table_name
group by username,friend_username,status
having count(*) > 1