Mysql 将同一表格中的两个选择合并为一个?

Mysql 将同一表格中的两个选择合并为一个?,mysql,sql,select,union,Mysql,Sql,Select,Union,我试过工会,但它不起作用,它说#1221-工会和订单的用法不正确 SELECT members.Name, friends.MemberNumber1 FROM friends INNER JOIN members ON friends.MemberNumber1= members.MemNo WHERE friends.MemberNumber2 LIKE 1 ORDER BY members.Name UNION SELECT members.Name, friends.MemberNu

我试过工会,但它不起作用,它说#1221-工会和订单的用法不正确

SELECT members.Name, friends.MemberNumber1
FROM friends
INNER JOIN members ON friends.MemberNumber1= members.MemNo
WHERE friends.MemberNumber2 LIKE 1
ORDER BY members.Name

UNION

SELECT members.Name, friends.MemberNumber2
FROM friends
INNER JOIN members ON friends.MemberNumber2= members.MemNo
WHERE friends.MemberNumber1 LIKE 1
ORDER BY members.Name
这两个查询本身都工作得很好,但我正在尝试将它们放在一个查询中,因为我希望在此之后在JSTL中对结果集进行“for each”。我还尝试为friends.MemberNumber1和friends.MemberNumber2创建别名,但没有改变任何内容。也许还有一个更简单的问题,我只是没有看到。还是我绝对需要提出两个问题


谢谢

您需要将
联合
放入子查询,然后订购整个东西

SELECT *
FROM (
    SELECT members.Name, friends.MemberNumber1
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION

    SELECT members.Name, friends.MemberNumber2
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS u
ORDER BY u.Name

您需要将
联合
放入子查询中,然后对整个内容进行排序

SELECT *
FROM (
    SELECT members.Name, friends.MemberNumber1
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION

    SELECT members.Name, friends.MemberNumber2
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS u
ORDER BY u.Name

您需要将
联合
放入子查询中,然后对整个内容进行排序

SELECT *
FROM (
    SELECT members.Name, friends.MemberNumber1
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION

    SELECT members.Name, friends.MemberNumber2
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS u
ORDER BY u.Name

您需要将
联合
放入子查询中,然后对整个内容进行排序

SELECT *
FROM (
    SELECT members.Name, friends.MemberNumber1
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION

    SELECT members.Name, friends.MemberNumber2
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS u
ORDER BY u.Name

您可以创建一个派生表,然后按顺序排序。 列名必须匹配。 我知道这个答案很接近Barmar的答案,但第二列的别名很重要。 您还可以查找UNION和UNION ALL之间的差异,我通常使用后者

SELECT Name , MemberNumber
FROM (
    SELECT members.Name, friends.MemberNumber1 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION ALL

    SELECT members.Name, friends.MemberNumber2 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS derived1
ORDER BY derived1.Name

您可以创建一个派生表,然后按顺序排序。 列名必须匹配。 我知道这个答案很接近Barmar的答案,但第二列的别名很重要。 您还可以查找UNION和UNION ALL之间的差异,我通常使用后者

SELECT Name , MemberNumber
FROM (
    SELECT members.Name, friends.MemberNumber1 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION ALL

    SELECT members.Name, friends.MemberNumber2 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS derived1
ORDER BY derived1.Name

您可以创建一个派生表,然后按顺序排序。 列名必须匹配。 我知道这个答案很接近Barmar的答案,但第二列的别名很重要。 您还可以查找UNION和UNION ALL之间的差异,我通常使用后者

SELECT Name , MemberNumber
FROM (
    SELECT members.Name, friends.MemberNumber1 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION ALL

    SELECT members.Name, friends.MemberNumber2 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS derived1
ORDER BY derived1.Name

您可以创建一个派生表,然后按顺序排序。 列名必须匹配。 我知道这个答案很接近Barmar的答案,但第二列的别名很重要。 您还可以查找UNION和UNION ALL之间的差异,我通常使用后者

SELECT Name , MemberNumber
FROM (
    SELECT members.Name, friends.MemberNumber1 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber1= members.MemNo
    WHERE friends.MemberNumber2 LIKE 1

    UNION ALL

    SELECT members.Name, friends.MemberNumber2 as MemberNumber
    FROM friends
    INNER JOIN members ON friends.MemberNumber2= members.MemNo
    WHERE friends.MemberNumber1 LIKE 1) AS derived1
ORDER BY derived1.Name

它还满足您的查询逻辑吗

SELECT members.Name, friends.MemberNumber1
FROM friends
INNER JOIN members ON friends.MemberNumber1= members.MemNo 
WHERE friends.MemberNumber2 LIKE 1 OR friends.[primarykey] IN (

SELECT friend.[primarykey]
FROM friends
INNER JOIN members ON friends.MemberNumber2= members.MemNo
WHERE friends.MemberNumber1 LIKE 1

)

它还满足您的查询逻辑吗

SELECT members.Name, friends.MemberNumber1
FROM friends
INNER JOIN members ON friends.MemberNumber1= members.MemNo 
WHERE friends.MemberNumber2 LIKE 1 OR friends.[primarykey] IN (

SELECT friend.[primarykey]
FROM friends
INNER JOIN members ON friends.MemberNumber2= members.MemNo
WHERE friends.MemberNumber1 LIKE 1

)

它还满足您的查询逻辑吗

SELECT members.Name, friends.MemberNumber1
FROM friends
INNER JOIN members ON friends.MemberNumber1= members.MemNo 
WHERE friends.MemberNumber2 LIKE 1 OR friends.[primarykey] IN (

SELECT friend.[primarykey]
FROM friends
INNER JOIN members ON friends.MemberNumber2= members.MemNo
WHERE friends.MemberNumber1 LIKE 1

)

它还满足您的查询逻辑吗

SELECT members.Name, friends.MemberNumber1
FROM friends
INNER JOIN members ON friends.MemberNumber1= members.MemNo 
WHERE friends.MemberNumber2 LIKE 1 OR friends.[primarykey] IN (

SELECT friend.[primarykey]
FROM friends
INNER JOIN members ON friends.MemberNumber2= members.MemNo
WHERE friends.MemberNumber1 LIKE 1

)
试试这个:

SELECT 
            *
FROM
(
    SELECT 
            Name = members.Name,
            MemberNumber = friends.MemberNumber1
    FROM    
            friends
    INNER JOIN 
            members 
            ON friends.MemberNumber1= members.MemNo
    WHERE 
            friends.MemberNumber2 LIKE 1
    UNION ALL
    SELECT 
            Name = members.Name, 
            MemberNumber = friends.MemberNumber2
    FROM 
            friends
    INNER JOIN 
            members ON friends.MemberNumber2= members.MemNo
    WHERE 
            friends.MemberNumber1 LIKE 1

) Unioned
ORDER BY 
            Unioned.Name
如果
UNION ALL
出现问题,请尝试
UNION

尝试以下操作:

SELECT 
            *
FROM
(
    SELECT 
            Name = members.Name,
            MemberNumber = friends.MemberNumber1
    FROM    
            friends
    INNER JOIN 
            members 
            ON friends.MemberNumber1= members.MemNo
    WHERE 
            friends.MemberNumber2 LIKE 1
    UNION ALL
    SELECT 
            Name = members.Name, 
            MemberNumber = friends.MemberNumber2
    FROM 
            friends
    INNER JOIN 
            members ON friends.MemberNumber2= members.MemNo
    WHERE 
            friends.MemberNumber1 LIKE 1

) Unioned
ORDER BY 
            Unioned.Name
如果
UNION ALL
出现问题,请尝试
UNION

尝试以下操作:

SELECT 
            *
FROM
(
    SELECT 
            Name = members.Name,
            MemberNumber = friends.MemberNumber1
    FROM    
            friends
    INNER JOIN 
            members 
            ON friends.MemberNumber1= members.MemNo
    WHERE 
            friends.MemberNumber2 LIKE 1
    UNION ALL
    SELECT 
            Name = members.Name, 
            MemberNumber = friends.MemberNumber2
    FROM 
            friends
    INNER JOIN 
            members ON friends.MemberNumber2= members.MemNo
    WHERE 
            friends.MemberNumber1 LIKE 1

) Unioned
ORDER BY 
            Unioned.Name
如果
UNION ALL
出现问题,请尝试
UNION

尝试以下操作:

SELECT 
            *
FROM
(
    SELECT 
            Name = members.Name,
            MemberNumber = friends.MemberNumber1
    FROM    
            friends
    INNER JOIN 
            members 
            ON friends.MemberNumber1= members.MemNo
    WHERE 
            friends.MemberNumber2 LIKE 1
    UNION ALL
    SELECT 
            Name = members.Name, 
            MemberNumber = friends.MemberNumber2
    FROM 
            friends
    INNER JOIN 
            members ON friends.MemberNumber2= members.MemNo
    WHERE 
            friends.MemberNumber1 LIKE 1

) Unioned
ORDER BY 
            Unioned.Name

如果
UNION ALL
出现问题,请尝试
UNION

我想您最后只需要一份订单?或者使用parenthasisWow谢谢,我试着用括号,用一个orderby,但不能同时用这两个。。。现在可以了!谢谢。(我觉得很傻)警告说,如果我不给朋友起别名,这是行不通的。会员编号1和2我想你最后只需要一份订单?或者使用parenthasisWow谢谢,我试着用括号,用一个orderby,但不能同时用这两个。。。现在可以了!谢谢。(我觉得很傻)警告说,如果我不给朋友起别名,这是行不通的。会员编号1和2我想你最后只需要一份订单?或者使用parenthasisWow谢谢,我试着用括号,用一个orderby,但不能同时用这两个。。。现在可以了!谢谢。(我觉得很傻)警告说,如果我不给朋友起别名,这是行不通的。会员编号1和2我想你最后只需要一份订单?或者使用parenthasisWow谢谢,我试着用括号,用一个orderby,但不能同时用这两个。。。现在可以了!谢谢。(我觉得很傻)警告说,如果我不给朋友加上别名,这是行不通的