Mysql只选择其他表中存在的记录
我有两张桌子:Mysql只选择其他表中存在的记录,mysql,Mysql,我有两张桌子: LOGGINGTYPES id name LOGFILES id type_id (linked to loggintypes.id) client_ip time logcontent 我对MYSQL很陌生,但我正在寻找一个查询,如果有日志链接,它只从loggingtypes中选择* 使用“SELECT*FROM loggingtypes ORDER BY name”可以获取所有信息,如何让它只选择有日志链接的行 是 最好的方法是什么 SELECT lt.* FROM LO
LOGGINGTYPES
id
name
LOGFILES
id
type_id (linked to loggintypes.id)
client_ip
time
logcontent
我对MYSQL很陌生,但我正在寻找一个查询,如果有日志链接,它只从loggingtypes中选择*
使用“SELECT*FROM loggingtypes ORDER BY name”可以获取所有信息,如何让它只选择有日志链接的行
是
最好的方法是什么
SELECT lt.*
FROM LOGGINGTYPES lt
INNER JOIN LOFGILES lf
ON lt.ID = lf.type_id
内部连接将限制您的LOGGINGTYPES列表仅限于日志文件中有匹配项的记录据我所知,您的查询是正确的 一种替代方法是使用联接:
select distinct
lt.id, lt.name
from
logging_types as lt
inner join logging as l on lt.id = l.type_id
内部连接是更快还是更安全?为什么要在我的查询中使用此选项?@Mbrouwer88这是一个替代选项,仅此而已。您可能希望练习使用
内部连接
用法,因为将来可能需要使用左连接
或右连接
。对于两个表之间的简单关系,where
和internal join
基本上是等价的,但是对于更复杂的关系,我认为internal join
是一种更干净的方法来解决这个问题。从现在起将使用内部联接而不是WHERE。
select distinct
lt.id, lt.name
from
logging_types as lt
inner join logging as l on lt.id = l.type_id