SQL查询以返回满足条件的第一行且仅返回第一行。

3

我有一个随机生成的密钥表,想将其作为我的网站注册密钥使用。

表格布局如下:

id|     regkey         |inUse

1 |nxwn362oe6jn4ses8psl|y
2 |nmin875euytoises7sil|n

我需要返回满足inuse列为n条件的第一行。

我该如何修改我的查询以仅返回一行?目前我有以下内容:

Select `regkey` FROM `database` WHERE `inUse` = n 

但我该从哪里开始呢?

提前致谢。


4
MySQL和SQL Server这两个数据库管理系统有所不同。 - Mahesh
1
我知道,我自己也感到非常惊讶。说实话,有点尴尬 xD。 - Habitat
每个使用 LIMITTOP 但没有 ORDER BY 的人,每次返回的行都不一致。请在查询中使用 ORDER BY 子句。 - NickyvV
3个回答

1

你可以使用limit

Select regkey FROM database WHERE inUse = n limit 1

哇,我也完全知道这个......现在是凌晨4点了...可能需要再喝一杯咖啡。不管怎样,我很感激! - Habitat
1
请注意,没有ORDER BY的LIMIT是相当无意义的。Abhik应该知道得更好! - Strawberry

1

在MYSQL中,它将是:

Select `regkey` FROM `database` WHERE `inUse` = n limit 1

在 SQL Server 中

Select top 1 `regkey` FROM `database` WHERE `inUse` = n 

0

如果你使用mysql,你可以使用limit:

Select `regkey` FROM `database` WHERE `inUse` = n order by id limit 1

如果你使用的是sql-server,你可以使用top

Select top 1 `regkey` FROM `database` WHERE `inUse` = n order by id

...并希望regkey没有被索引 - Strawberry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接