MySQL选择不必返回结果集的查询

时间:2014-02-13 09:47:44

标签: mysql select

比如说我有一个登录表单,它使用用户名和密码并对数据库进行验证。通常我会跑:SELECT username, password FROM tablename WHERE username = '$user' and password = '$pass' LIMIT 1;
这将返回一个我没用的结果集。我想要检查的是它是否存在于数据库中。是否有可以执行此操作的MySQL查询。

3 个答案:

答案 0 :(得分:1)

SELECT EXISTS (SELECT 1 FROM tablename WHERE username = '$user' and password = '$pass') whatever_column_alias 

如果存在则返回1,否则返回0。它比计数更快,因为它会在子查询命中后立即停止搜索。

您在子查询中选择的内容无关紧要。选择1只是我的习惯。

答案 1 :(得分:0)

您可以查看有多少用户拥有该凭据

SELECT count(*) as user_count
FROM tablename 
where username = '$user' and password = '$pass'

结果是0,然后登录失败。如果1成功了。

答案 2 :(得分:0)

使用COUNT

SELECT count(*) as nb_user
FROM tablename 
WHERE username ="username"
  AND password = "password"