Mysql 返回第一个表数据,不管第二个表是否返回数据,运算符连接规范化

Mysql 返回第一个表数据,不管第二个表是否返回数据,运算符连接规范化,mysql,normalization,Mysql,Normalization,我有两个MySQL表,“sections”和“pages” 我尝试使用单个查询从一个或两个表中获取数据 如果节和页存在,则运算符工作正常 如果节和页不存在,则and运算符也可以 但是,如果页面与index.php URL不存在(以及操作员问题),我似乎无法找到从节表中提取的方法(提取站点的所有index.php页面) 我正在尝试编写更好的查询,以下是我的目标和我尝试过的内容: 我不想拉取与该部分匹配的所有页面,然后遍历它们 如果可以在单个查询中执行第二个查询,我不想浪费资源 我目前有两个if条件

我有两个MySQL表,“sections”和“pages”

我尝试使用单个查询从一个或两个表中获取数据

如果节和页存在,则运算符工作正常

如果节和页不存在,则and运算符也可以

但是,如果页面与index.php URL不存在(以及操作员问题),我似乎无法找到从节表中提取的方法(提取站点的所有index.php页面)

我正在尝试编写更好的查询,以下是我的目标和我尝试过的内容:

我不想拉取与该部分匹配的所有页面,然后遍历它们

如果可以在单个查询中执行第二个查询,我不想浪费资源

我目前有两个if条件查询(对于给定的页面加载,只有一个查询会执行),因为带有'index.php'URL的页面将用于所有部分

我将FROM与sections表结合使用,不过我也尝试在page表上使用LEFT JOIN

这适用于非索引的页面:

(SELECT NULL AS meta_description FROM sections WHERE url = 'example')
UNION
(SELECT meta_description FROM pages WHERE url = 'something');
该查询最多返回两行,并且非常容易处理


节和页存在,返回结果:

SELECT * 
FROM sections AS cs 
LEFT JOIN pages AS cp ON (cp.id_section = cs.id) 
WHERE cs.section_url LIKE BINARY 'section_url' AND cp.url LIKE BINARY 'index.php'

节存在,页不存在,返回0行

SELECT * 
FROM sections AS cs 
LEFT JOIN pages AS cp ON (cp.id_section = cs.id) 
WHERE cs.section_url LIKE BINARY 'section_url' AND cp.url LIKE BINARY 'not_exist'

表结构:

页面:id、节id、元描述、元语言、元机器人、标题、url

章节:id、章节id、元描述、元语言、元机器人、标题、url


最重要的是,我希望确保语法与SQL无关,因为我计划最终从MySQL迁移到PostgreSQL。

主要是猜测,因为我不确定您到底想要实现什么,但请尝试以下方法:

SELECT * 
FROM sections AS cs 
LEFT JOIN pages AS cp ON (cp.id_section = cs.id AND cp.url LIKE BINARY 'not exists') 
WHERE cs.section_url LIKE BINARY 'section_url'

你能把你的问题贴出来吗?我很困惑。有些事情可能有助于澄清您的问题:(1)发布表定义;(2) 发布您提到的使用
的查询;(3) 发布您提到的使用
左连接的查询。
。好的,编辑post…添加了表结构和其他查询,并提供了它工作和不工作的示例(返回0行)。最初看起来不错,只需要了解我的表结构,尽管我认为这可能就是答案;正在努力……好吧,祝你好运。:-)请记住,如果您有多个页面具有给定的id_部分,那么该部分将有多行(每行具有不同的页面)。但这在加入的情况下是没有帮助的。被接受和投票。我没有看到返回多行的示例(例如index.php),因为只有一个页面url(例如index.php)会连接到给定的节,并且没有页面可以连接到多个节。