update exhibor e set e.province,e.city,e.area,e.adress,e.content inner join sheet3 s on e.company_name = s.nvc_company_name这样写正确吗
时间: 2024-01-18 07:02:28 浏览: 98
这个 SQL 语句的语法是错误的,正确的语法应该是:
```
UPDATE exhibor e
INNER JOIN sheet3 s ON e.company_name = s.nvc_company_name
SET e.province = s.province, e.city = s.city, e.area = s.area, e.address = s.address, e.content = s.content;
```
这个语句的意思是从 `exhibor` 表和 `sheet3` 表中,找到 `company_name` 列相同的行,然后将 `exhibor` 表中的 `province`、`city`、`area`、`address`、`content` 列更新为 `sheet3` 表中对应的值。
相关问题
update exhibitor e set e.province = s. proovince,e.city = s.city,e.area = s.area,e.adress = s.adress,e.content = s.content from exhibitor e join Sheet1 s on e.company_name = s.company_name where e.company_name = s.company_name为什么不对,怎么修改
你的SQL语句中使用了内连接(INNER JOIN),因此只会更新exhibitor表中与Sheet1表匹配的行。如果exhibitor表中有一些公司名在Sheet1表中不存在,则这些行不会被更新。
如果你想要更新exhibitor表中所有的行的省份、城市、地区、地址和内容,可以使用左外连接(LEFT JOIN)来实现。具体的SQL语句如下:
```
UPDATE exhibitor e
SET e.province = s.province, e.city = s.city, e.area = s.area, e.address = s.address, e.content = s.content
FROM exhibitor e
LEFT JOIN Sheet1 s
ON e.company_name = s.company_name;
```
这个SQL语句将会更新exhibitor表中所有的行,如果在Sheet1表中没有匹配的记录,则相应的列会被设置为NULL。注意,这个语句中使用了LEFT JOIN来连接exhibitor和Sheet1两张表。
希望这个回答能够解决你的问题。
package ch1; import java.sql.*; public class TestDB { public static void main(String[] args) { Connection conn = null; //定义连接对象 String Drivername = "com.mysql.jdbc.Driver"; //连接数据库驱动 String url = "jdbc:mysql://localhost:3306/tongxun"; //连接路径 String user = "root"; //连接数据库用户名 String password = "root"; //连接数据库的密码,请视实际情况修改密码 try { ; //填空2 加载驱动 System.out.println("加载驱动程序成功!!"); ; //填空3 和目标数据库建立连接 System.out.println("连接成功!!!"); String sql = "select * from ben where name=? "; // 带参数的sql查询语句 ;//填空4 创建用来发送sql动态语句的对象 ;//填空5 设置上述sql语句的参数,即name为“托尼” ;//填空6 执行动态查询并返回结果 System.out.println(" 查询的结果如下:"); while ( ) { //填空7定位到查询结果的下一行 String tel = ; //填空8 获取表中tel列的值赋给字符串变量tel String name = rst.getString("name"); String sex = rst.getString(3); String adress = rst.getString(4); System.out.println("电话:" + tel + " 姓名:" + name + " 性别:" + sex + " 地址:" + adress); } rst.close(); st.close(); ; //填空9关闭和数据库的连接 } catch (ClassNotFoundException e) { e.printStackTrace(); } catch ( ;) { //填空10 生成SQLException异常类对象 e.printStackTrace(); } } }
以下是填空后的代码:
```java
package ch1;
import java.sql.*;
public class TestDB {
public static void main(String[] args) {
Connection conn = null; //定义连接对象
String Drivername = "com.mysql.jdbc.Driver"; //连接数据库驱动
String url = "jdbc:mysql://localhost:3306/tongxun"; //连接路径
String user = "root"; //连接数据库用户名
String password = "root"; //连接数据库的密码,请视实际情况修改密码
try {
Class.forName(Drivername); //填空2 加载驱动
System.out.println("加载驱动程序成功!!");
conn = DriverManager.getConnection(url, user, password); //填空3 和目标数据库建立连接
System.out.println("连接成功!!!");
String sql = "select * from ben where name=? "; // 带参数的sql查询语句
PreparedStatement st = conn.prepareStatement(sql);//填空4 创建用来发送sql动态语句的对象
st.setString(1, "托尼");//填空5 设置上述sql语句的参数,即name为“托尼”
ResultSet rst = st.executeQuery();//填空6 执行动态查询并返回结果
System.out.println(" 查询的结果如下:");
while (rst.next()) { //填空7定位到查询结果的下一行
String tel = rst.getString(2); //填空8 获取表中tel列的值赋给字符串变量tel
String name = rst.getString("name");
String sex = rst.getString(3);
String adress = rst.getString(4);
System.out.println("电话:" + tel + " 姓名:" + name + " 性别:" + sex + " 地址:" + adress);
}
rst.close();
st.close();
conn.close(); //填空9关闭和数据库的连接
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) { //填空10 生成SQLException异常类对象
e.printStackTrace();
}
}
}
```
这段代码是一个Java程序,用于连接MySQL数据库,并执行带参数的查询语句。程序中使用了JDBC API来进行数据库操作,主要包括以下步骤:
1. 加载MySQL数据库的驱动程序;
2. 连接到目标数据库;
3. 创建一个PreparedStatement对象,用于执行带参数的查询语句;
4. 设置查询语句的参数;
5. 执行查询语句,并获取结果集;
6. 遍历结果集,获取每一行的数据;
7. 关闭结果集、语句和连接对象。
其中,第4步到第6步是填空部分,需要根据具体需求进行修改。
阅读全文