【发布时间】:2010-07-21 20:48:04
【问题描述】:
我最终做了两个 SQL 查询并在 PHP 中使用 array_intersect() 过滤掉结果:
$sql1 = 'SELECT z.*, u.username, u.user_colour, u.username_clean, u.user_avatar, u.user_avatar_type
FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u
WHERE (( z.user_id = ' . $user->data['user_id'] . '
AND z.friend = 1
AND u.user_id = z.zebra_id )
OR ( z.zebra_id = ' . $user->data['user_id'] . '
AND z.friend = 1
AND u.user_id = z.user_id ))
ORDER BY u.username_clean ASC';
$sql2 = 'SELECT z.*, u.username, u.user_colour, u.username_clean, u.user_avatar, u.user_avatar_type
FROM ' . ZEBRA_TABLE . ' z, ' . USERS_TABLE . ' u
WHERE (( z.user_id = ' . $user_id . '
AND z.friend = 1
AND u.user_id = z.zebra_id )
OR ( z.zebra_id = ' . $user_id . '
AND z.friend = 1
AND u.user_id = z.user_id ))
ORDER BY u.username_clean ASC';
两个查询的结构是相同的,唯一的区别是在第二个查询中$user->data['user_id](第一人称)被替换为$user_id(第二人称)。我想检索两个用户共有的朋友。谁能将其合并到一个查询中,这样我就不必使用两个查询并调用array_intersect()?
【问题讨论】:
-
您使用什么风格的 SQL?是否支持 INTERSECT 运算符?
-
MySQL。我从不知道 INTERSECT 运算符。
-
一个普通的“多对多”关系表,有 2 个(或更多条目)共同:参见stackoverflow.com/questions/477006/…
-
我刚刚检查过,MySQL 没有 INTERSECT 运算符。但是......“mysql intersect”的网络搜索带来了很多人的解决方法。也许其中之一会有所帮助?
标签: php sql mysql intersection