mysql - 使用 Where 和 Limit 返回相同行的多个表选择
问题描述
我试图从 'limit = 3' 的 2 个表中进行选择,但它在第一个表上返回相同的行。
atable
------------------
[a_id - a_title - a_status]
[id1a - title1a - 1]
[id2a - title2a - 1]
[id3a - title3a - 1]
btable
------------------
[b_id - b_title - b_status]
[id1b - title1b - 1]
[id2b - title2b - 1]
[id3b - title3b - 1]
询问
SELECT a.a_id
, a.a_title, b.b_id
, b.b_title
FROM atable a
, btable b
WHERE a_status = 1
AND b_status = 1
LIMIT 3
结果
title1a title1b
title1a title2b
title1a title3b
但我想要这样
title1a title1b
title2a title2b
title3a title3b
我的查询有什么问题?
编辑:经过几次尝试,我选择了所有行,但我如何为这个查询实现限制 3?尝试添加限制时出现语法错误。
SELECT a_title FROM atable LEFT JOIN btable ON (btable.b_id = atable.a_id) WHERE atable.a_status = 1 UNION SELECT b_title FROM btable RIGHT JOIN ON (btable.b_id = atable.a_id) WHERE btable.b_status = 1
解决方案
您正在交叉连接两个表,这意味着数据乘以3x3。因此,您需要期望显示 9 行。
这描述了以 开头的三个结果的原因title1a
。
如果atable
并且btable
有关系,您需要加入两个表,然后您可以获得正确的结果。
推荐阅读
- jquery - ajax调用后悬停图像
- java - 这段代码告诉计算机做什么 lights[k] = !lights[k];?
- bash - 从 find 命令中修剪目录并附加 `/`
- python - 如何将我在 tkinter 树中单击的目录的路径传递给“打开文件”函数以显示它
- graphql - “无法在“查询”类型上查询“可用”字段
- python - 悬停在应用程序图标上时如何设置系统托盘标题
- php - 如何在 PHP 中自动将表单数据发送到电子邮件地址
- python - 将通用 pandas 数据框传递给 django REST API
- reactjs - @types/react-transition-group:通用类型 'ReactElement
' 需要 1 到 2 个类型的 arguments.ts(2707)
- reactjs - 如何使用 Expo 修复未定义 React-Native 的读取属性“showimagepicker”