gpt4 book ai didi

mysql - 连接三个表 MySQLWhere

转载 作者:行者123 更新时间:2023-11-29 06:50:03 25 4
gpt4 key购买 nike

首先,我意识到还有其他类似的问题,我已经阅读了其中很多问题,但我无法弄清楚。

我有三个这样的表。

urilist
----------------
rowid | uri
1000 xyz
1001 abc
1002 cde
1003 fgh

wordlist
----------------
rowid | word
1 word1
2 word2
3 word3
4 word4

wordlocation2
----------------
uriid | wordid
1001 1
1001 2
1001 3
1001 4

表一个保留uri。表 b 保存单词。表 c 是一个查找表,您可以在其中查看与 uri 关联的每个单词,反之亦然。

我需要返回给定 uri 的单词。所以对于 uri abc 我需要单词 word1,word2,word3,word4

这是我最近的尝试。

select word from wordlist join wordlocation2 on wordlist.rowid = 

wordlocation2.wordid
left join urilist on wordlocation2.uriid = urilist.rowid
and urilist.uri = "a uri address";

这返回了数千个不相关的答案。我不太确定执行此操作的最佳方法。任何帮助将不胜感激。

最佳答案

让我们通过选择 * 来查看您的查询结果。我使用了您提供的“uri 地址”来演示 LEFT JOIN

查询:

select * from wordlist join wordlocation2 on wordlist.rowid = wordlocation2.wordid left join urilist on wordlocation2.uriid = urilist.rowid and urilist.uri =  "a uri address";

这将获取以下结果

enter image description here

正如你已经完成了 wordlocation2 LEFT JOIN urilist 一样,即使 urilist 没有匹配的行,通过将 urilist 值设置为 NULL,结果中也会有一个值(这就是左连接的含义)。在您的情况下,如果没有匹配的行,您不应该获得任何值。因此,请使用 JOIN 而不是 LEFT JOIN。

select * from wordlist join wordlocation2 on wordlist.rowid = wordlocation2.wordid join urilist on wordlocation2.uriid = urilist.rowid where urilist.uri =  "abc";

我认为表的顺序并不重要,因为这里的所有内容都是内部联接。如果有人对此提出一些建议,我随时准备纠正自己。

关于mysql - 连接三个表 MySQLWhere,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47893522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com