0

我有user表并且payment是多对多关系表。

SELECT user.uID,
       user.uName,
       user.uLocation,
       user.uBlock,
       user.uRoom,
       user.uStatus,
       payment.pID,
       payment.pDate,
       payment.pType
FROM   user
       INNER JOIN payment
         ON user.uID = payment.pID
LIMIT  0,100  
  1. 结果将INNER JOIN一事无成。
  2. 用户LEFT JOIN 显示正确结果但返回NULL支付
  3. 付款RIGHT JOIN 显示正确结果但NULL返回用户

如何获得正确的结果以显示两者?LEFT JOIN&RIGHT JOIN

4

2 回答 2

2

你想要FULL OUTER JOIN吗?

SELECT user.uID,
       user.uName,
       user.uLocation,
       user.uBlock,
       user.uRoom,
       user.uStatus,
       payment.pID,
       payment.pDate,
       payment.pType
FROM   user
       FULL OUTER JOIN payment
         ON user.uID = payment.pID
LIMIT  0,100

全外连接

从概念上讲,完全外连接结合了应用左外连接和右外连接的效果。如果 FULL OUTER JOINed 表中的记录不匹配,则结果集对于缺少匹配行的表的每一列都将具有 NULL 值。对于那些匹配的记录,将在结果集中生成一行(包含从两个表中填充的字段)。

维基百科


MySQL阅读内容,您应该使用UNION

于 2012-04-29T19:11:53.287 回答
1

您要求用户 ID 等于付款 ID。如果返回一个空集,你很幸运,它也可能返回完全错误的数据:) 它可能应该是:

user.uID = payment.uID

或者payment.userId,或者什么的。检查付款表中的列。

于 2012-04-29T19:11:27.803 回答