这个 MySQL 语法中的 "SELECT TRUE" 是做什么的?

3

我正在整理一些旧的未使用代码,但是我找不到关于这个select查询语句语法的任何文档:

    $stmt = $dbh->prepare("SELECT TRUE FROM `users` WHERE `username`= :username LIMIT 1");
$stmt->bindParam(':username', $regUsername);
$stmt->execute();

MySQL文档没有提到任何信息,我不确定它返回什么值......如果记录匹配,它是否只返回'1',如果不匹配,则返回'0'?
2个回答

7

如果有匹配项,它会选择带有单个1的行,如果没有匹配项,则不会选择任何行。


为什么我找不到这个的文档? - marked-down
1
@Antilogical 因为这是一个常规的选择。您只需选择匹配条件的行的值为 TRUE (1)。如果有一行,您将得到单个 1;如果没有行符合条件,则不会得到任何行。 - Joachim Isaksson
例如,如果“SELECT a from b”给出了10行“a”的值,则“SELECT 1 FROM b”将给出10行值为“1”的结果。 - Joachim Isaksson
好的,非常感谢。我之前还以为这可能是一个保留字呢。 - marked-down
在实际应用中它会有什么用处? - user1844933
在这种情况下,您可以使用SELECT username FROM...来实现更或多或少相同的效果,但是如果查询/表更改以使用其他字段名称,则不需要更改1TRUE。它也是一个常量,因此可能会稍微帮助优化器。 - Joachim Isaksson

2
TRUE=1  //selects a row with a single 1
and FALSE=0

在SQL中,True或False并不是保留字。在编程时,通常会使用一个比特位,其中0 = False1 = True


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