编写SQL语句以从多行中进行选择

时间:2015-10-26 23:37:02

标签: sql

这可能是一个愚蠢的问题。我会感激任何帮助。

我正在尝试编写一个基于逻辑计算行数的查询,如下所示:

不计算其中username = @ username和friendsname = @friendsname和username = @friendsname和@friendsname = @username where status = 0

的行

考虑下图中的表格:

enter image description here

查询应该返回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;

2 个答案:

答案 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