MySQL-使用WHERE子句将内部连接到同一个表中
我有一个名为活动的MySQL表,如下所示MySQL-使用WHERE子句将内部连接到同一个表中,mysql,sql,select,Mysql,Sql,Select,我有一个名为活动的MySQL表,如下所示 ID integer Name text isBalanced boolean redirects tinyint 我正在尝试实现一个SELECT查询,以便获得isBalanced为false的所有行加上isBalanced为true的定义行数。在我得到这个结果之后,我需要得到一个重定向次数最少的结果 我知道有很多方法可以做到这一点,但我很难找到解决的办法。这是我知道之前得到的 SELECT campaigns.id, campaigns.
ID integer
Name text
isBalanced boolean
redirects tinyint
我正在尝试实现一个SELECT查询,以便获得isBalanced
为false的所有行加上isBalanced
为true的定义行数。在我得到这个结果之后,我需要得到一个重定向次数最少的结果
我知道有很多方法可以做到这一点,但我很难找到解决的办法。这是我知道之前得到的
SELECT campaigns.id, campaigns.name, campaigns.isBalanced, campaigns.redirects
FROM campaigns AS c
INNER JOIN campaigns_2 AS c2
WHERE c.isBalanced = 0
但是,我无法从c2集合中仅选择其中的一些,然后重新组合所有过滤器,以获得具有最少重定向次数的单个过滤器
任何帮助都将不胜感激。听起来您想要联合所有人
,可能需要按顺序
和限制
:
select c.*
from campaigns c
where c.isBalanced = 0
union all
(select c.*
from campaigns c
where c.isBalanced = 1
limit ??
)
order by redirects
limit 1;
“定义的数字”位于?
所在的位置。显示一些示例数据和预期结果。不清楚您需要什么。您的“定义”行数是多少?这些ID在表中吗?一些标准?另外,不要用“我想要这些行,然后我想从这些行中得到这一行”来思考。SQL是基于集合的,你需要教会自己用这些术语而不是顺序处理术语来思考。@TomH是和否,SQL也是顺序的。例如,当您从子查询中选择时,可以将其视为两步过程。此外,类似于IN或EXISTS(甚至其本身所在的位置)的内容也可以看作是一个连续的步骤。这里不需要UNION ALL
,只要UNION
@StanUNION ALL
总是比UNION
更可取,除非您特别想承担删除重复值的开销。就是这样,@GordonLinoff。非常感谢你。