我对表格有疑问
选择uid1,uid2从朋友处选择uid1 IN (从朋友中选择uid2,其中uid2=‘.$user_id。)和uid2 IN (从朋友处选择uid2,其中uid1 1=‘.$user_id.’)
现在的问题是嵌套查询
从朋友中选择uid2,其中uid1 1=‘.$user_ID.’
返回大量的ids(大约。( 5000)。
朋友表的表结构是uid1(int),uid2(int)。此表用于确定两个用户是否作为朋友链接在一起。
有什么解决办法吗?我能用不同的方式写查询吗?或者还有别的办法来解决这个问题。我相信我不是第一个面对这样一个问题的人。
任何帮助都将不胜感激。
发布于 2010-02-23 10:15:01
您可以使用带有OR语句的单个联接来消除一个子查询。
但是,要消除任何双行,您必须只返回DISTINCT行。
SELECT DISTINCT f1.uid1, f1.uid2
FROM friend AS f1 INNER JOIN
friend AS f2 ON (f1.uid1 = f2.uid2 OR f1.uid2 = f2.udi)
WHERE f2.uid1='.$user_id.'https://stackoverflow.com/questions/2317192
复制相似问题