select a.job_id, a.job_name, a.job_group, a.invoke_target, a.cron_expression, a.misfire_policy, a.concurrent, a.status, a.create_by, a.create_time, a.remark, a.job_des, a.cron_des, b.status as last_execute_status, b.create_time as last_execute_time from sys_job a left join sys_job_log b ON a.job_name = b.job_name and a.job_group = b.job_group where b.create_time = (select max(create_time) from sys_job_log c where a.job_name = c.job_name and a.job_group = c.job_group) or b.create_time is null 此SQl为Oracle运行环境,因为sys_job_log有create_time相同的数据导致了数据重复,如何解决
时间: 2024-03-15 09:45:21 浏览: 110
可以在子查询中增加一个条件,筛选出除了最大create_time之外的数据,即:
```
select a.job_id, a.job_name, a.job_group, a.invoke_target, a.cron_expression, a.misfire_policy, a.concurrent, a.status, a.create_by, a.create_time, a.remark, a.job_des, a.cron_des, b.status as last_execute_status, b.create_time as last_execute_time
from sys_job a
left join sys_job_log b ON a.job_name = b.job_name and a.job_group = b.job_group
where b.create_time = (select max(c.create_time) from sys_job_log c where a.job_name = c.job_name and a.job_group = c.job_group and c.create_time < b.create_time) or b.create_time is null
```
这样可以避免重复数据的问题。
相关问题
ssh_client.invoke_shell()交互式ssh方法
`invoke_shell()`是Python标准库`paramiko`中的一个方法,它允许你在SSH连接中开启一个交互式的shell会话。`paramiko`是一个用于处理SSH协议的Python库,常用于自动化远程系统管理和脚本执行。
当你调用`ssh_client.invoke_shell()`,它会在远程服务器上启动一个shell,使得你可以像直接登录终端一样发送命令并接收返回的结果。例如:
```python
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('hostname', username='username', password='password')
stdin, stdout, stderr = ssh.exec_command('ls')
output = stdout.read().decode()
print(f"Remote system output: {output}")
# 关闭shell和连接
stdin.close()
stdout.close()
stderr.close()
ssh.close()
```
在这个例子中,`exec_command()`方法执行了`ls`命令,并将结果保存到`output`变量中。
ssh_shell = ssh.invoke_shell()
当你在Python中使用`ssh.invoke_shell()`这个命令时,通常是在SSH(Secure Shell)库的帮助下,比如paramiko库,它允许你在程序中建立到远程服务器的安全连接。`invoke_shell()`函数的作用是启动一个远程shell会话,使得你可以通过这个连接像直接登录终端一样发送和接收命令。
举个例子,如果你已经有一个SSH对象`ssh`,这个操作通常是这样的序列:
1. 首先你需要初始化SSH连接并认证,如`ssh.connect(host, username, password)`。
2. 然后调用`invoke_shell()`打开一个远程shell通道,此时返回的是一个`subprocess.Popen`实例,代表了新的shell会话。
3. 你可以通过读取这个Popen对象的标准输入和输出,发送和获取命令的结果。
```python
# 假设已连接到远程主机
stdin, stdout, stderr = ssh.invoke_shell()
# 发送命令
stdin.write(b'sudo ls\n') # 对于Linux系统,假设需要sudo权限
# 接收命令结果
output = stdout.read().decode('utf-8')
print(output)
# 关闭连接
stdin.close()
stdout.close()
stderr.close()
```
阅读全文