Mysql 通过或连接两个表
我有这些桌子 一个文本包含多个项目,作者,行 ttext_obj表 text_obj_writers表 文本对象行表 所以,我想选取至少有一个作者或一行的文本行 现在我编写了这样的代码 至少有一次写入的文本对象id 至少有一行的文本对象id 但我想把这些都拿走 如何通过或连接两个表?您可以使用: 您可以使用exists: 存在以下用途: 这比使用聚合要好得多,因为将表连接在一起后,不需要删除重复项。使用存在: 这比使用聚合要好得多,因为在将表连接在一起后,您不需要删除重复项。您可以使用UNION来执行此操作,UNION也将删除重复项:Mysql 通过或连接两个表,mysql,sql,Mysql,Sql,我有这些桌子 一个文本包含多个项目,作者,行 ttext_obj表 text_obj_writers表 文本对象行表 所以,我想选取至少有一个作者或一行的文本行 现在我编写了这样的代码 至少有一次写入的文本对象id 至少有一行的文本对象id 但我想把这些都拿走 如何通过或连接两个表?您可以使用: 您可以使用exists: 存在以下用途: 这比使用聚合要好得多,因为将表连接在一起后,不需要删除重复项。使用存在: 这比使用聚合要好得多,因为在将表连接在一起后,您不需要删除重复项。您可以使用UNION
select obj_id id from test_obj_writers
union
select obj_id id from test_obj_line
我假设两个表的所有对象ID都存在于表文本中。您可以使用UNION执行此操作,UNION还将删除重复项:
select obj_id id from test_obj_writers
union
select obj_id id from test_obj_line
我假设两个表的所有obj_id都存在于表text_obj中
text line
1 2
4 3
1 4
SELECT text.id FROM `text_obj` text
inner join text_obj_writers writer
on writer.obj_id = text.id group by text.id
//it returns
1
2
SELECT text.id FROM `text_obj` text
inner join text_obj_lines line
on line.obj_id = text.id group by text.id
//it returns
1
4
1
2
4
select o.*
from ttext_obj o
where
exists (select 1 from text_obj_writers writer w where w.obj_id = o.id)
or exists (select 1 from text_obj_lines l where l.obj_id = o.id)
select o.*
from text_obj o
where exists (select 1
from text_obj_writers tow
where tow.obj_id = o.id
) or
exists (select 1
from text_obj_lines tol
where tol.obj_id = o.id
) ;
select obj_id id from test_obj_writers
union
select obj_id id from test_obj_line