我是SQL的新手,所以我试图通过创建一个简单的登录页面来学习它,我在数据库中有3个用户,并且试图使SQLite如果找到匹配项,则返回true,否则返回true。发现NULL。
这是称为“用户”的表。
A a = map.getOrDefault(true, map.get(false)); // null if not found
此代码有效,但它返回NULL和true:
ID username password recovery
---------- ---------- ---------- ----------
1 Admin pass 476
2 mod pass123 928
3 test001 12345 182
它的作用:
select case when username in ('mod')
AND password = ('pass123') then true
else NULL end from users
我需要它做什么:
1 NULL
2 2
3 NULL
我尝试了LIMIT和ORDER之类的许多操作,但我不知道该如何解决,请帮忙吗?
答案 0 :(得分:0)
我想您需要为包含用户数据的行的1
获取true
的含义,2
和id
。
您不需要CASE
语句,而需要WHERE
子句中的条件。
同样也不需要LIKE
运算符,因为您检查是否相等。
这样做:
select true, id
from users
where username = 'mod' and password = 'pass123'
答案 1 :(得分:0)
使用当前的代码,您正在选择数据库中的所有记录
ID username password recovery
---------- ---------- ---------- ----------
1 Admin pass 476
2 mod pass123 928
3 test001 12345 182
,然后将它们转换为单个列,根据用户名和密码值显示true或null。这就是您所得到的,因为SELECT子句中包含了什么。
您想要做的是: