SELECT *
FROM Headwords LEFT JOIN Definitions ON Headwords.recid=Definitions.HeadWords_ID;
Headwords :单词表(1个单词多个解释) 2万条数据 字段:recid
Definitions :解释表(和上边是1对多的关系,)3万条数据 id,HeadWords_ID(是recid的外键)
显示结果:一个单词取第一个解释(因为有的是多对1 这种情况取一个) 显示2万条结果
SELECT DISTINCT Headwords.recid,Definitions.HeadWords_ID
FROM Headwords LEFT JOIN Definitions ON Headwords.recid=Definitions.HeadWords_ID;
你把结果集当成一个表来用。
刘有平 17:26:25
select a.* from a, (你上面OK了的语句) as b where a.id =b.id.
刘有平 17:27:02
a表可以是你想字段的表。b表是刚才OK了的语句。id是主外键。
select Definitions.HeadWords_ID,Headwords.realword,Definitions.Definition from Definitions, (SELECT DISTINCT Headwords.recid,Definitions.HeadWords_ID,Headwords.realword,Definitions.Definition
FROM Headwords LEFT JOIN Definitions ON Headwords.recid=Definitions.HeadWords_ID) as b where Headwords.recid=Definitions.HeadWords_ID
表:fanyi :id,fanyis,fanyiID
表:danci:id ,dancis
最终结果:
select fanyiID,max(danci.dancis) as dancis,max(fanyi.fanyis) as fanyi from danci,fanyi where fanyi.fanyiID=danci.id group by fanyiID