Mysql 表和相同查询的两列的联合快捷方式?
因此,想象一个由名字、中间名和姓氏组成的表 我想写一个查询,返回所有中间名和名字,作为一列,这些人的姓氏呈现出一种完全神秘、复杂的性质,需要20个嵌套子查询左右才能确定 一种方法是Mysql 表和相同查询的两列的联合快捷方式?,mysql,sql,Mysql,Sql,因此,想象一个由名字、中间名和姓氏组成的表 我想写一个查询,返回所有中间名和名字,作为一列,这些人的姓氏呈现出一种完全神秘、复杂的性质,需要20个嵌套子查询左右才能确定 一种方法是 Select FirstName From Names Where LastName in (HISTSNEROIP) Union Select MiddleName From Names Where LastName in (HISTSNEROIP) 其中HISTSNEROIP代表“如果可能,甚至不应该运行一次的
Select FirstName From Names Where LastName in (HISTSNEROIP)
Union
Select MiddleName From Names Where LastName in (HISTSNEROIP)
其中HISTSNEROIP代表“如果可能,甚至不应该运行一次的低效子查询”。顾名思义,将其运行两次以上是一个巨大的禁忌
理想情况下,我会做类似的事情
Select FirstName and MiddleName from names where Lastname in (HISTSNEROIP)
其中“and”被我无法使用的任何工具替换。为什么不在一个查询中选择此选项
Select FirstName, MiddleName
From Names
Where LastName in (HISTSNEROIP)
如果需要,您可以取消打印:
Select (case when x.n = 1 then FirstName else MiddleName end)
From Names n cross join
(select 1 as n union all select 2 as n) x
Where LastName in (HISTSNEROIP)
为什么不在一个查询中选择此选项
Select FirstName, MiddleName
From Names
Where LastName in (HISTSNEROIP)
如果需要,您可以取消打印:
Select (case when x.n = 1 then FirstName else MiddleName end)
From Names n cross join
(select 1 as n union all select 2 as n) x
Where LastName in (HISTSNEROIP)
您可以使用:
这样HISTSNROIP只运行一次。您可以使用:
这样HISTSNROIP只运行一次。类似的功能应该可以运行
SELECT f_m
FROM (
SELECT FirstName as f_m, LastName FROM names
UNION
SELECT MiddleName as f_m, LastName FROM names
) as T
WHERE T.LastName in (HISTSNEROIP);
像这样的东西应该有用
SELECT f_m
FROM (
SELECT FirstName as f_m, LastName FROM names
UNION
SELECT MiddleName as f_m, LastName FROM names
) as T
WHERE T.LastName in (HISTSNEROIP);
您的MySql版本是什么?MySql的v8.0.15版本是什么?MySql的v8.0.15版本需要一列名称,第一列或中间列。而且,我们有一个愚蠢的政策,尽可能避免流量控制。我的上级可能更喜欢20次执行HISTSNEROIP而不是使用它…@ThanosMaravel。第二个解决方案提供了一个名称列表。我知道,但它有“case”,它可以作为所述哑策略的流控制。我需要一列名称,第一列或中间列。而且,我们有一个愚蠢的政策,尽可能避免流量控制。我的上级可能更喜欢20次执行HISTSNEROIP而不是使用它…@ThanosMaravel。第二个解决方案提供了一个单一的名称列表。我知道,但它有“case”,它可以作为上述哑策略的流控制。好吧,我喜欢这个答案,但结果表明服务器的sql版本低于我的客户端。我没有CTE!很抱歉搞混了。好吧,我很喜欢这个答案,但事实证明服务器的sql版本低于我的客户端。我没有CTE!抱歉搞混了,这是我的错。这是如此巧妙,非常简单,我觉得自己很愚蠢,没有想到它。不用担心!发生在我们所有人身上。很高兴它成功了。这是如此巧妙,非常简单,我觉得自己很愚蠢,没有想到它。不用担心!发生在我们所有人身上。很高兴它成功了