使用EXISTS子查询在Pubs数据库titles 表及sales表中查询没有销售图书的书店编号。
时间: 2023-06-03 17:02:00 浏览: 122
好的,这是一个技术问题。以下是SQL查询语句:
SELECT DISTINCT stor_id
FROM sales
WHERE stor_id NOT IN
(SELECT DISTINCT stor_id FROM titles INNER JOIN sales ON titles.title_id = sales.title_id)
ORDER BY stor_id;
相关问题
当没有用 EXISTS 引入子查询时,在选择列表中只能指定一个表达式
在这种情况下,您可以在选择列表中指定一个表达式作为结果。这可以是一个数学运算、函数调用、条件判断等。只能指定一个表达式是因为没有使用 EXISTS 引入子查询,所以查询的结果集只包含一个值。例如:
SELECT 2 + 3; -- 这将返回结果 5
SELECT COUNT(*) FROM customers; -- 这将返回 customers 表中的行数
SELECT CASE WHEN age >= 18 THEN '成年人' ELSE '未成年人' END FROM users; -- 这将根据用户的年龄返回不同的结果
请注意,这些示例都是简化的,实际中可能会更复杂。具体的表达式取决于您的需求和数据模型。
python在数据表里面查询出来的数据创建新表保存在数据库中
你可以使用以下步骤将查询出来的数据创建新表保存在数据库中:
1. 连接到数据库,获取游标对象。
2. 执行SELECT语句,查询需要保存的数据。
3. 使用CREATE TABLE语句创建新表,定义表结构和字段类型。
4. 使用INSERT INTO语句将查询出来的数据插入到新表中。
5. 提交事务并关闭数据库连接。
下面是一个示例代码,假设我们需要从名为`students`的数据表中查询所有年龄大于等于18岁的学生,并将他们的姓名和年龄保存到名为`adult_students`的新表中:
```python
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test'
)
# 获取游标
cursor = conn.cursor()
# 查询数据
sql = "SELECT name, age FROM students WHERE age >= 18"
cursor.execute(sql)
data = cursor.fetchall()
# 创建新表
create_table_sql = '''
CREATE TABLE IF NOT EXISTS adult_students (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
age INT
)
'''
cursor.execute(create_table_sql)
# 插入数据
insert_sql = "INSERT INTO adult_students (name, age) VALUES (%s, %s)"
cursor.executemany(insert_sql, data)
# 提交事务
conn.commit()
# 关闭连接
cursor.close()
conn.close()
```
以上代码中,我们首先使用SELECT语句查询年龄大于等于18岁的学生,并将查询结果保存到变量`data`中。然后使用CREATE TABLE语句创建名为`adult_students`的新表,其中包含`id`、`name`和`age`三个字段。最后,使用INSERT INTO语句将查询出来的数据插入到新表中,并提交事务并关闭数据库连接。