0

嗨,我正在使用亚音速做一个小报告我很菜鸟而且我不知道如何只列出我的报告中的第一条记录我正在做类似的事情:

new Select("id,Name,place,group").From(User.Schema)
                                 .InnerJoin(Profile.Schema)
                                 .InnerJoin(userGroup.Schema)
                                 .Where("place")
                                 .IsEqualTo("insomeplace")
                                 .ExecuteReader();

    result:
    093007 Joe doe insomeplace S2A
    093007 Joe doe insomeplace S2A
    093007 Joe doe insomeplace S2A
    093007 Joe doe insomeplace S2A

我已经尝试 new Select("bla bla").Distinct() new Select("bla bla").Top("1") 但这些似乎都不起作用......所以我能做什么???有任何想法吗???

使用 Top("1") 时出现错误提示“您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以了解在 '1 user. id, user. Name, Place, Place FROM附近使用的正确语法user '在第 1 行"

我正在使用亚音速 2.x

提前致谢

4

4 回答 4

1

我从您问题中的参考资料中假设您正在使用 MySql。恐怕我对MySql不太了解,但以下内容可能会有所帮助:

  1. 我可以向您保证 .Top("1") 肯定适用于针对 SQL Server 的 SubSonic 2.x。
  2. 你能找到一个与 SQL Server 的 Profiler for MySql 等效的工具来查看正在发送到数据库的 SQL 代码吗?
  3. TOP 1 在 MySql 中不是有效的 SQL,而是您需要使用 LIMIT 子句 - http://dev.mysql.com/doc/refman/5.0/en/select.html
于 2010-09-01T10:20:41.837 回答
0

另一种方法是使用.ExecuteSingle(),它只返回第一个结果。这样做的缺点是数据库实际上会返回查询的所有行(SubSonic 只会丢弃除第一条记录之外的任何内容)。

于 2010-09-24T15:10:48.337 回答
0

退出!!!!我提议使用

string sqlString = "Select * ...";
new InlineQuery().ExecuteReader(sqlString);
于 2010-08-27T18:14:11.480 回答
0

您可以使用 Paged(...) 方法:

new Select("id,Name,place,group").From(User.Schema)
                                 .InnerJoin(Profile.Schema)
                                 .InnerJoin(userGroup.Schema)
                                 .Where("place")
                                 .Paged(1, 1)
                                 .IsEqualTo("insomeplace")
                                 .ExecuteReader();

我不是 100% 确定您是否必须使用Paged(1,1)or Paged(0,1),请同时尝试。

于 2010-09-01T14:09:43.813 回答