mysql - 复杂的 MySQL 命令出现问题。我可以做这样的复合陈述吗?

标签 mysql sql sql-server prepared-statement

我可以在数据库中搜索一个元素,其中我的PreparedStatement的参数之一是从我通常作为单独语句创建的变量中找到的值吗?

所以我想做

preparedStatement = conn.prepareStatement("SELECT COUNT(*) FROM table1 WHERE Name = ? AND WHERE  user_ID = ?);  
preparedStatement.setString(1, name);  
preparedStatement.setString(2, userID);    
rs = preparedStatement.executeQuery();  

除非按照目前的情况,我需要一个单独的语句来查找另一个表中的 userID 变量。 类似于:

preparedStatement = conn.prepareStatement("SELECT user_id FROM users WHERE name = ?);  
preparedStatement.setString(1, theirName);  

那么有没有办法将它们复合成两个语句?即:类似...

"SELECT COUNT(*) FROM table1 WHERE Name = (user_ID FROM users WHERE username = theirName); 

编辑:这可能更清楚。假设我有一个汽车表,其中每辆车都有一个名称和一个 Owner_ID。 我有一个用户表,其中每个用户都有名称、密码和 ID。 每辆车的车主 ID 都是用户的 ID 之一。

所以我真正想要得到的(在一个语句中)是所有名称为 X 的汽车的计数,其中它们的车主 ID = 用户 Y 的 id。

最佳答案

这是通过将表连接在一起来完成的:

SELECT COUNT(*) FROM 
    table1 t1
    JOIN table2 t2 ON t2.name = t1.name
WHERE t1.name = "John" AND t2.user_ID = 2342433

关于mysql - 复杂的 MySQL 命令出现问题。我可以做这样的复合陈述吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007565/

相关文章:

mysql - 在表复制操作中更新现有行和插入不存在行的最有效方法是什么?

sql-server - 递归CTE通过多个级别更新父记录

php - Hadoop起点

mysql - 我如何使用 sequelize findorcreate defaults

mysql - 在 my.cnf 中将 MySQL 默认字符集更改为 UTF-8?

MySQL - 我们可以按列位置而不是名称排序吗?

mysql - 使用平均值获取分数作为一组合格率的特定查询

sql-server - 糟糕的 SQL 读取性能(罪魁祸首更新统计数据?)

sql - 将时间转换为0015格式Sql

php - 如何使用它的 id 从数据库中调用 HTML 代码