Mysql只选择其他表中存在的记录

时间:2013-04-18 16:13:41

标签: mysql

我有两张桌子:

LOGGINGTYPES
id
name

LOGFILES
id
type_id (linked to loggintypes.id)
client_ip
time
logcontent

我是MYSQL的新手,但是我正在寻找一个查询,如果有链接的日志,则只从日志类型中选择*。

使用“SELECT * FROM loggingtypes ORDER BY name”,我得到了所有内容,如何让它只选择链接到日志的行?

SELECT 
DISTINCT logging_types.id, loggingtypes.name 
FROM logging, logging_types 
WHERE logging.type_id = loggingtypes.id

最佳方式?

2 个答案:

答案 0 :(得分:0)

SELECT lt.*
FROM LOGGINGTYPES lt
INNER JOIN LOFGILES lf
ON lt.ID = lf.type_id

INNER JOIN会将您的LOGGINGTYPES列表限制为只有LOGFILES中匹配的记录

答案 1 :(得分:0)

据我所知,您的查询是正确的。

另一种方法是使用Join:

select distinct 
    lt.id, lt.name
from 
    logging_types as lt
    inner join logging as l on lt.id = l.type_id