【问题标题】:Selecting specific rows based on data from other table根据其他表中的数据选择特定行
【发布时间】:2014-02-06 20:17:53
【问题描述】:

我有流动的桌子:

见小提琴: http://sqlfiddle.com/#!2/c1c2f/1

我正在努力寻找一种方法

选择software.name、systems.pc(或software.pc)、systems.user

只有 software.date 字段与 systems.time 字段匹配的行 意思是字段

【问题讨论】:

    标签: mysql date select join sqlfiddle


    【解决方案1】:

    你需要一个 JOIN,像这样:

    SELECT software.name, software.pc, systems.pc, systems.user
    FROM software
    JOIN systems
    ON software.date = systems.time AND software.pc = systems.pc;
    

    小提琴:http://sqlfiddle.com/#!2/c1c2f/34/0

    【讨论】:

    • 谢谢,但这给出了 4 行的输出。如果查询正确,应该有 2 行
    • @Axxess 请提供预期的输出(使用edit 链接将其添加到您的问题中)。
    • @Axxess 我已经更新了我上面的答案,你可以试试修改后的查询,它会给你 2 行。
    • 是的,它应该像你一样工作,@Parkash Kumar 帮了我很多:)
    【解决方案2】:

    使用JOIN查询复杂数据时最好使用别名,见下文:

    SELECT so.name, sy.pc, sy.user FROM software so 
    JOIN systems sy
    WHERE so.date = sy.time AND so.pc = sy.pc;
    

    特别是,当您有相同的命名列时。与您的情况一样,两个表都有相同的列(PC)。

    【讨论】:

    • @Axxess 尝试用结果查询用户,并比较两个表的 pc。然后你就可以找出区别了。
    • @Axxess 另外,由于软件名称重复,结果令人困惑。
    • 我找到了答案。谢谢你的帮助:)
    猜你喜欢
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 2018-03-16
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    相关资源
    最近更新 更多