首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Inner ON子句

Inner ON子句
EN

Stack Overflow用户
提问于 2011-06-16 21:13:32
回答 5查看 365关注 0票数 2

我有一个MySQL查询,它试图获取所有包含像“Word%”这样的数据的页面。我有一个名为Pages2Data的多对多表。要做到这一点,我似乎需要一个将页面连接到Pages2Data表的内部连接,然后需要另一个将Pages2Data连接到数据的内部连接。

以下操作不起作用,因为嵌套的SELECT子句可以返回多行。但我不确定该如何修复它:

代码语言:javascript
复制
SELECT * FROM `Pages` 
   INNER JOIN `Pages2Data` ON 
      (`Pages2Data`.`DataID`=(SELECT `DataID` FROM `Data` WHERE `DataWord` LIKE 'word%'))
      AND `Pages`.`PageID`=`Pages2Data`.`PageID`;
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-06-16 21:23:20

代码语言:javascript
复制
SELECT * FROM `Pages`     
INNER JOIN `Pages2Data`
   ON `Pages`.`PageID`=`Pages2Data`.`PageID`
INNER JOIN `Data` ON `Data`.`DataID`= `Pages2Data`.`DataID`
WHERE `DataWord` LIKE 'word%'; 
票数 2
EN

Stack Overflow用户

发布于 2011-06-16 21:31:59

首先是查询的问题:

  1. 连接条件应紧挨着ON子句
  2. 在最外面的查询

中没有WHERE子句

固定查询:

代码语言:javascript
复制
SELECT * FROM `Pages` 
INNER JOIN `Pages2Data` ON `Pages`.`PageID`=`Pages2Data`.`PageID`
WHERE `Pages2Data`.`DataID`= (SELECT `DataID` FROM `Data` WHERE `DataWord` LIKE 'word%');

可选查询:

代码语言:javascript
复制
SELECT `PG`.*
FROM `Pages` `PG`
INNER JOIN `Pages2Data` `PD` ON `PD`.`PageID` = `PG`.`PageID`
INNER JOIN `Data` `DA` ON `PD`.`DataID` = `DA`.`DataID`
WHERE `DA`.`DataWord` LIKE 'word%';
票数 1
EN

Stack Overflow用户

发布于 2011-06-16 21:18:54

尝尝这个

代码语言:javascript
复制
SELECT * FROM `Pages` p, `Pages2Data` p2d, `Data` d
WHERE p.`PageID` = p2d.`PageID`
AND p2d.`DataID` = d.`DataID`
AND `DataWord` LIKE 'word%'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6372468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档