MySQL 中的两个左连接和一个并集

发布于 2024-09-17 22:41:56 字数 507 浏览 4 评论 0原文

我正在尝试在 MySQL 中执行一个相当复杂的查询;至少对我来说很复杂。

这是我正在尝试执行的操作的示例:

SELECT * FROM friends
LEFT JOIN users ON users.uid = friends.fid1
LEFT JOIN users ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;

我正在返回:ERROR 1066 (42000): Not unique table/alias: 'users'

我哪里出错了,我应该如何执行这个查询?

I'm trying to do a pretty complex query in MySQL; complex for me, at least.

Here's an example of what I'm trying to do:

SELECT * FROM friends
LEFT JOIN users ON users.uid = friends.fid1
LEFT JOIN users ON users.uid = friends.fid2
WHERE (friends.fid1 = 1) AND (friends.fid2 > 1)
UNION SELECT fid2 FROM friends
WHERE (friends.fid2  = 1) AND (friends.fid1 < 1)
ORDER BY RAND()
LIMIT 6;

I'm getting back: ERROR 1066 (42000): Not unique table/alias: 'users'.

Where am I going wrong, and how should I really be performing this query?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄风 2024-09-24 22:41:56

为您的表命名,例如:

LEFT JOIN users u1 ON u1.uid = friends.fid1
LEFT JOIN users u2 ON u2.uid = friends.fid2

Alias your table, like:

LEFT JOIN users u1 ON u1.uid = friends.fid1
LEFT JOIN users u2 ON u2.uid = friends.fid2
盗琴音 2024-09-24 22:41:56

您已经使用表的不同字段编写了两次左连接,似乎当它被解析时,给它们别名,然后将它们与 friends 表连接

LEFT JOIN users users1 ON users1.uid = friends.fid1
LEFT JOIN users users2 ON users2.uid = friends.fid2

You have written left join two times with different fields of tables, it seems to When it got parse so give them alias and then join them with friends Table

LEFT JOIN users users1 ON users1.uid = friends.fid1
LEFT JOIN users users2 ON users2.uid = friends.fid2
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文