我对SQL很陌生,所以我试图通过创建一个简单的登录页面来学习它,我在数据库中有3个用户,如果找到匹配的话,我试图使SQLite返回为真,如果找到NULL,则什么也不返回。
这是一个叫做“用户”的表。
ID username password recovery
---------- ---------- ---------- ----------
1 Admin pass 476
2 mod pass123 928
3 test001 12345 182
此代码工作正常,但它同时返回NULL和true:
select case when username in ('mod')
AND password = ('pass123') then true
else NULL end from users
它所做的:
1 NULL
2 2
3 NULL
我需要它做的是:
1 2
我试了很多东西,如限制和秩序,但我搞不懂,有什么帮助吗?
发布于 2019-05-08 09:36:37
我猜您需要为包含用户数据的行的1
( true
和2
)获取id
。
您不需要CASE
语句,而需要WHERE
子句中的一个条件。
也不需要LIKE
操作符,因为您检查是否相等。
所以要这样做:
select true, id
from users
where username = 'mod' and password = 'pass123'
发布于 2019-05-08 09:41:33
使用当前的代码,您将选择数据库中的所有记录。
ID username password recovery
---------- ---------- ---------- ----------
1 Admin pass 476
2 mod pass123 928
3 test001 12345 182
然后将它们转换为单个列,根据用户名和密码值显示true或null。这是因为SELECT子句中的内容而得到的结果。
你想做的是:
https://stackoverflow.com/questions/56037538
复制相似问题