【问题标题】:simple mysql statement that I can not find我找不到的简单mysql语句
【发布时间】:2015-11-05 16:01:45
【问题描述】:

抱歉,不知道给这个问题起什么标题,因为它可能会让人感到困惑。

我的表只有两列 - userName1 和 userName2 我有这个:

SELECT * FROM `Friends` WHERE `userName1` = 'aName'
UNION
SELECT * FROM `Friends` WHERE `userName2` = 'aName'

此 sql 语句的结果为我带来了 userName1userName2 中包含“aName”的行。 如何过滤结果以仅显示 OTHER 条目?避免返回包含“aName”的列

【问题讨论】:

    标签: mysql sql union


    【解决方案1】:

    你可以使用:

    select userName2 from friends where userName1 = 'aName'
    union
    select userName1 from friends where userName2 = 'aName';
    

    没有union的方法:

    select distinct (case when userName1 = 'aName' then userName2 else userName1 end)
    from friends
    where 'aName' in (userName1, userName2);
    

    【讨论】:

    • 我认为 where 子句应该是 WHERE (userName1 = 'aName' OR userName2 = 'aName' )
    • 完全可以,谢谢。现在试图将其转换为 php
    • 知道如何返回 user1Image 或 user2Image 以及 username1 或 userName2 吗?类似于当时 (userName2,userImage2) 或其他情况 (userName1,userImage1)
    • @cmario 。 . .这听起来像是应该在另一个问题中而不是在评论中提出的问题。
    【解决方案2】:

    我会尝试这样的:

    SELECT userName2 as 'name' FROM Friends WHERE userName1 = 'aName'
    UNION
    SELECT userName1 as 'name' FROM Friends WHERE userName2 = 'aName'
    

    您可能还要求它们不能都等于“aName”

    SELECT userName2 as 'name' FROM Friends WHERE userName1 = 'aName' and userName2 != 'aName'
    UNION
    SELECT userName1 as 'name' FROM Friends WHERE userName2 = 'aName' and userName1 != 'aName'
    

    (……有待改进)

    【讨论】:

    • 哎呀我来晚了
    【解决方案3】:

    如果是这种情况,您可以使用 INNER JOIN

      SELECT *
        FROM `Friends` f
       INNER JOIN `Friends` f1
        ON f.userName1 = f1.userName2
    

    【讨论】:

    • 此查询不完整。您需要验证'aName' 也可以是朋友可以在userName1userName2。你需要返回一个单列 no *
    • 这根本无法回答问题。
    • UNION 将执行与 INNER JOIN 相同的功能,并且当您基于相同列进行过滤时。结果集应该是一样的。
    • @Maverick No UNION 与 INNER JOIN 不同。此外,OP 要求每行一个字段,其中您的 select 返回 4,您将获得所有记录组合,您认为 f.userName1 = f1.userName2 的唯一方法是当它们等于 'aName' 而不是必然如此……
    猜你喜欢
    • 2018-07-22
    • 2013-08-06
    • 1970-01-01
    • 2021-07-15
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-22
    相关资源
    最近更新 更多