【发布时间】:2013-02-17 20:18:01
【问题描述】:
我有两个相同的 sql 查询,我想合并结果。 第一个是:
SELECT USER.USER_ID, NAME, SURNAME, EMAIL, STATUS, PHOTO
FROM FRIENDLIST, USER, USER_PROFILE
WHERE FRIENDLIST.USER_ID=". $userID ."
AND APPROVED='YES'
AND USER.USER_ID=FRIENDLIST.USER_ID
AND USER.USER_ID=USER_PROFILE.USER_ID
第二个是:
SELECT USER.USER_ID, NAME, SURNAME, EMAIL, STATUS, PHOTO
FROM FRIENDLIST, USER, USER_PROFILE
WHERE FRIENDLIST.FRIEND_ID=". $userID ."
AND APPROVED='YES'
AND USER.USER_ID=FRIENDLIST.USER_ID
AND USER.USER_ID=USER_PROFILE.USER_ID
我尝试使用联合,但我得到一个空结果,而不是 $userID=2 的 2 行。
SELECT USER.USER_ID, NAME, SURNAME, EMAIL, STATUS, PHOTO
FROM FRIENDLIST, USER, USER_PROFILE
WHERE FRIENDLIST.USER_ID=". $userID ."
AND APPROVED='YES'
AND USER.USER_ID=FRIENDLIST.USER_ID
AND USER.USER_ID=USER_PROFILE.USER_ID
UNION
SELECT USER.USER_ID, NAME, SURNAME, EMAIL, STATUS, PHOTO
FROM FRIENDLIST, USER, USER_PROFILE
WHERE FRIENDLIST.FRIEND_ID=". $userID ."
AND APPROVED='YES'
AND USER.USER_ID=FRIENDLIST.USER_ID
AND USER.USER_ID=USER_PROFILE.USER_ID
有什么想法吗??
【问题讨论】:
-
要清楚——你是说每个单独的查询都适用于 $userID=2(即产生 2 行),但 UNION 给你一个空的结果集?
-
他们每个人都返回 1 行..与联合我期望 2 但我得到零。
-
至少你需要
UNION ALL;否则将删除重复项(使操作毫无意义)。 -
嗯,UNION 是隐式 UNION DISTINCT —— 所以两次发出完全相同的查询会给你 1 行,而不是 2 —— 你需要使用 UNION ALL 来获取重复项。
-
我想要不同的结果。我刚刚注意到,从 $userID 的值来看,我想要的结果是“否”。我将脚本转移到另一个具有不同值的数据库中!谢谢大家的回答!我需要睡觉!