我有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
INNER JOIN
结果将无效。LEFT JOIN
用户显示正确的结果,但在付款表NULL
RIGHT JOIN
付款显示正确的结果,但在用户表NULL
醇>
如何显示正确的结果? LEFT JOIN
& RIGHT JOIN
答案 0 :(得分: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
阅读this,您应该使用UNION
答案 1 :(得分:1)
您要求用户ID等于付款ID。你很幸运,如果它返回一个空集,它也可能返回完全错误的数据:)它应该是:
user.uID = payment.uID
或payment.userId
或其他什么。检查付款表中的列。