【问题标题】:How Select Only One Record in MySQL?如何在 MySQL 中只选择一条记录?
【发布时间】:2011-08-05 05:16:37
【问题描述】:

我正在用 MySQL 做 Win-form 项目。

在我的问题中,.. 我想在我的项目中显示第一个数据。

我知道主键是否是标准的,如 1 意味着它很容易。但在我的项目中,主键 id 是可变的。如果升序或降序也取所有记录,然后精细给出结果。

我想要第一张唱片 na?.是任何标识 MySQL 中的第一条记录查询。

我的代码 -

 connection.Open();
                command.CommandText = "select student_code from attendance_master where subject_code='" + subcode + "' and period_code='" + percode + "' and date='" + date + "'";
                Reader = command.ExecuteReader();
                while (Reader.Read())
                {
                    stdcode = Reader[0].ToString();
                }
                connection.Close();

否则我可以找到主 id 值的最小值并选择特定记录。我不认为这是最好的方法。但它减少了不必要的记录执行。

请给我一个IDEA....

【问题讨论】:

  • 请阅读SQL注入。
  • 我还认为您应该阅读有关 sql 注入和有关 ado.net 命令参数csharp-station.com/Tutorials/AdoDotNet/Lesson06.aspx
  • 这个问题是不是使用完整或清除?。请告知我。还是我的代码标准很低?为什么这个问题得到减票?。

标签: c# mysql winforms


【解决方案1】:

尝试使用limit语句,示例:

SELECT * FROM table LIMIT 0, 1

【讨论】:

  • 第一个数字是开始的偏移量,例如如果他想获取第二个结果,他会做'LIMIT 1,1'
  • 由于我没有权限在其他用户的答案上发布 cmets,我觉得有必要在这里发布:"SELECT TOP 1 * FROM table" is an SQL-only statement, MySQL 不支持此功能, 并且赞成 'LIMIT' 声明。
【解决方案2】:

这个怎么样?

SELECT TOP 1 * FROM table  

【讨论】:

  • 我尝试使用“select TOP 1 subject_code,period_code,date from admission_master”这个查询。但它会抛出错误“1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 '1 subject_code,period_code,date from admission_master' 附近使用”跨度>
  • 感谢 lelewin。请阅读 Dessix Machina 答案。它是一个 SQL 查询。但它在 MySQL 中不起作用。感谢支持。
  • 是的,这是我的错。我想念你使用 MySQL。对此感到抱歉。
  • 哦,别担心这个。感谢您的帮助。
【解决方案3】:

你可以这样做

 connection.Open();
 command.CommandText = "select student_code from attendance_master where subject_code='" + subcode + "' and period_code='" + percode + "' and date='" + date + "'";
 Reader = command.ExecuteReader();
 if (Reader.Read())
  {
   stdcode = Reader[0].ToString();
  }
 connection.Close();

您使用 SQL 的方式对于 SQL 注入是开放的,这是一个很大的安全问题!
更好地在 SQL 中使用参数...

【讨论】:

  • 我建议使用参数化查询,以防止 SQL 注入。特别是如果 sub_code 等是用户提供的输入。
  • 重大安全问题意味着什么?它如何影响项目?当我选择参数时有什么好处。
  • 除了使用参数化查询,正如其他人推荐的那样,我也建议在使用后关闭ExecuteReader()。它可以防止数据库锁定下一个查询。刚遇到同样的问题,觉得值得一提。
【解决方案4】:

您必须按主键对行进行排序:http://dev.mysql.com/doc/refman/5.5/en/sorting-rows.html 然后,通过LIMIT 子句限制输出:http://dev.mysql.com/doc/refman/5.5/en/select.html

【讨论】:

  • 我知道排序。但是当我只需要一行时它不想要。这是对的吗?。谢谢。
【解决方案5】:

在Mysql中 SELECT * FROM table LIMIT 0, 1

IN SQL SELECT TOP 1 * FROM 表

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多