Mysql SQL中的子查询混淆
只使用一个基本的SQL程序来运行一些小东西,所以答案应该非常简单和小。但数据库中有两个表,其中一个表被标记为: tAuthors与fAuthorID和fAuthorName,接下来我有一本与fAuthorID、fPubID……等有关的书(我只想使用这两本书中的一本)。并拥有具有fPubID和fPubName的tpublisher 所以我一直想做的就是列出所有作者的名字,这些作者的书名由出版商出版,ID号为12;按字母顺序列出作者姓名。我记下了字母顺序部分,但似乎能找到正确的作者姓名。这是我得到的,但它只吸引了一位作者,我相信这里有7位作者,他们的身份证号码是12Mysql SQL中的子查询混淆,mysql,sql,Mysql,Sql,只使用一个基本的SQL程序来运行一些小东西,所以答案应该非常简单和小。但数据库中有两个表,其中一个表被标记为: tAuthors与fAuthorID和fAuthorName,接下来我有一本与fAuthorID、fPubID……等有关的书(我只想使用这两本书中的一本)。并拥有具有fPubID和fPubName的tpublisher 所以我一直想做的就是列出所有作者的名字,这些作者的书名由出版商出版,ID号为12;按字母顺序列出作者姓名。我记下了字母顺序部分,但似乎能找到正确的作者姓名。这是我得到的
SELECT `fAuthorName`, `fAuthorID`
FROM `tAuthors`
WHERE `fAuthorID` IN (
SELECT `fPubID`
FROM `tPublishers`
WHERE `fPubID` = 12
)
ORDER BY `fAuthorName` ASC;
可能更容易进行连接。Authors表通过author id连接到Books表,Books表通过publisher id连接到publisher表。一旦它们全部连接起来,您就可以通过pub id进行筛选和排序
SELECT `a.fAuthorName`, `a.fAuthorID`
FROM `tAuthors` a
JOIN `tBooks` b ON (a.fAuthorID = b.fAuthorID )
JOIN `tPublishers` p ON (b.fPubID = p.fPubID)
WHERE `p.fPubID` = 12
ORDER BY `a.fAuthorName` ASC;
可能更容易进行连接。Authors表通过author id连接到Books表,Books表通过publisher id连接到publisher表。一旦它们全部连接起来,您就可以通过pub id进行筛选和排序
SELECT `a.fAuthorName`, `a.fAuthorID`
FROM `tAuthors` a
JOIN `tBooks` b ON (a.fAuthorID = b.fAuthorID )
JOIN `tPublishers` p ON (b.fPubID = p.fPubID)
WHERE `p.fPubID` = 12
ORDER BY `a.fAuthorName` ASC;
您可以使用tBooks而不是TPublisher执行以下查询:
SELECT `fAuthorName`, `fAuthorID`
FROM `tAuthors`
WHERE `fAuthorID` IN (
SELECT `fAuthorID`
FROM `tBooks`
WHERE `fPubID` = 12
)
ORDER BY `fAuthorName` ASC;
您可以使用tBooks而不是TPublisher执行以下查询:
SELECT `fAuthorName`, `fAuthorID`
FROM `tAuthors`
WHERE `fAuthorID` IN (
SELECT `fAuthorID`
FROM `tBooks`
WHERE `fPubID` = 12
)
ORDER BY `fAuthorName` ASC;
看起来很好,唯一的问题是我们现在还没有到使用“加入”的地步,只是“在哪里”。看起来很好,唯一的问题是我们现在还没有到使用“加入”的地步,只是“在哪里”。