java - SQL Join 两个表都为 WHERE 子句提供参数
问题描述
以下 SQL 查询是否有效?
SELECT domains.domainURL, passwords.* FROM domains LEFT JOIN passwords ON domains.id = passwords.domainId WHERE domains.domainURL = {1} AND passwords.userId = {2};
SQL 查询应接收用户为特定域(PW 管理器)保存的密码。因此我有用户 ID 和 domainURL。我需要使用 domainURL 从另一个表中接收域 ID。然后我需要从密码表中接收密码,其中用户 ID 和 domainId 作为参数。
解决方案
这个查询会“工作”吗?
SELECT d.domainURL, p.*
FROM domains d LEFT JOIN
passwords p
ON d.id = p.domainId
WHERE d.domainURL = {1} AND p.userId = {2};
好吧,它不应该导致错误——假设表和列是正确的。它做你想做的事吗?好吧,如果你想要一个INNER JOIN
,它会做你想做的事。
我怀疑你可能打算:
SELECT d.domainURL, p.*
FROM domains d LEFT JOIN
passwords p
ON d.id = p.domainId AND p.userId = {2}
WHERE d.domainURL = {1};
passwords
如果它存在,这将返回该行。它将返回domains
匹配WHERE
子句的所有行。
推荐阅读
- authentication - 仅用于公钥身份验证的私钥和公钥的加密使用掩码
- java - Java - 如何摆脱标题栏?
- python - 如何调节绑定的激活('
') 事件到窗口的某个区域? - matlab - 洗牌向量元素,使两个相似的元素最多出现两次
- python - 如何使用 K 近邻将标记样本的分布分类?
- json - MongoDB Realm 将 BJSON 转换为 JSON
- javascript - 如何修复“无法编译 src/index.js 'firebase' 未定义 no-undef”?
- swiftui - 一维中的绝对位置
- javascript - axios中如何设置两个拦截器
- jenkins - 如何在 Jenkins 中将 shell 命令作为变量传递