SELECT 来自 2 个不相关的表
SELECT From 2 Tables that not relation
我有两个 tables“class”和“account_class(关系 table)”
class
id name day time
1 course 1 sunday 08:00
2 course 2 monday 13:00
3 course 3 friday 19:00
4 course 4 saturday 01:00
和account_class
id username_account id_class
1 user1 1
2 user1 2
3 user2 3
4 user3 3
我想 select 所有 class 不是由 user1 select 编辑的,我尝试了左连接、右连接、内连接,但没有用
这是我的代码
SELECT class.* FROM class WHERE NOT EXISTS (SELECT * FROM account_class WHERE account_class.username_account = 'faraazap')
如果代码正确,应该是这样的
id name day time
3 course 3 friday 19:00
4 course 4 saturday 01:00
谢谢
你的sql
SELECT class.*
FROM class
WHERE NOT EXISTS
(SELECT *
FROM account_class
WHERE account_class.username_account = 'faraazap')
当此用户未在任何注册时返回所有 classes,当用户未在任何注册时不返回 classes。这是因为您的 NOT EXISTS
没有将正在查询的 class 连接到正在参加的 class。需要稍作修改:
SELECT c.*
FROM class c
WHERE c.Id not in
(SELECT id_class
FROM account_class
WHERE account_class.username_account = 'faraazap')
通过此查询,您现在选择所有 class 值,其中 class Id
值未出现在此用户参加的 class 列表中.
我不确定您是想在比较中使用 faraazap 还是 user1。但是您可以使用“IN”语句来解决这个问题,如下所示。你只 select 记录 table “class”,它的 ID 在另一个 select 语句中。
SELECT *
FROM class
WHERE class.id NOT IN (
SELECT id_class
FROM account_class
WHERE username_account = 'user1'
)
如果您想做的只是获取 user1 未选择的所有 类,我认为您不需要任何连接。
SELECT *
FROM class
WHERE id IN (SELECT id_class
FROM account_class
WHERE username_account <> 'user1')
但是,如果您想连接表,并从两个表中获取信息,那么:
SELECT c.*, ac.*
FROM class c JOIN account_class ac ON c.id = ac.id_class
WHERE ac.username_account <> 'user1'
select * from class
where id not in
(select class.id
from class, account_class
where class.id=id_class
and username_account='user 1');
我有两个 tables“class”和“account_class(关系 table)”
class
id name day time
1 course 1 sunday 08:00
2 course 2 monday 13:00
3 course 3 friday 19:00
4 course 4 saturday 01:00
和account_class
id username_account id_class
1 user1 1
2 user1 2
3 user2 3
4 user3 3
我想 select 所有 class 不是由 user1 select 编辑的,我尝试了左连接、右连接、内连接,但没有用
这是我的代码
SELECT class.* FROM class WHERE NOT EXISTS (SELECT * FROM account_class WHERE account_class.username_account = 'faraazap')
如果代码正确,应该是这样的
id name day time
3 course 3 friday 19:00
4 course 4 saturday 01:00
谢谢
你的sql
SELECT class.*
FROM class
WHERE NOT EXISTS
(SELECT *
FROM account_class
WHERE account_class.username_account = 'faraazap')
当此用户未在任何注册时返回所有 classes,当用户未在任何注册时不返回 classes。这是因为您的 NOT EXISTS
没有将正在查询的 class 连接到正在参加的 class。需要稍作修改:
SELECT c.*
FROM class c
WHERE c.Id not in
(SELECT id_class
FROM account_class
WHERE account_class.username_account = 'faraazap')
通过此查询,您现在选择所有 class 值,其中 class Id
值未出现在此用户参加的 class 列表中.
我不确定您是想在比较中使用 faraazap 还是 user1。但是您可以使用“IN”语句来解决这个问题,如下所示。你只 select 记录 table “class”,它的 ID 在另一个 select 语句中。
SELECT *
FROM class
WHERE class.id NOT IN (
SELECT id_class
FROM account_class
WHERE username_account = 'user1'
)
如果您想做的只是获取 user1 未选择的所有 类,我认为您不需要任何连接。
SELECT *
FROM class
WHERE id IN (SELECT id_class
FROM account_class
WHERE username_account <> 'user1')
但是,如果您想连接表,并从两个表中获取信息,那么:
SELECT c.*, ac.*
FROM class c JOIN account_class ac ON c.id = ac.id_class
WHERE ac.username_account <> 'user1'
select * from class
where id not in
(select class.id
from class, account_class
where class.id=id_class
and username_account='user 1');