【问题标题】:Pull SQL data from two tables从两个表中拉取 SQL 数据
【发布时间】:2013-03-12 17:34:12
【问题描述】:

我有一个名为db.datadb.info 的表。 db.data 表的每个条目都有一个 namedateadded 列。 info 表中每个名称都有一个 name 和一个 status 列(状态为 yn)。 我想从 db.data 表中提取按日期添加到该数据库的所有名称的数据,但前提是状态(db.status 中的那个)为 n。

我一直在环顾四周,发现JOIN,但这似乎只有在两个表中的数据相同时才有效。在这里,名称是相同的,但我希望从 db.data 中提取数据,但仅将“名称”单元格(在两个表中)的状态设置为“n”。

【问题讨论】:

  • 两者之间有共同的列吗?例如,db 表可以有一个整数 ID,然后 info 表将使用该 ID 来引用 db 表中的正确记录。如果没有,您将不得不依靠名称或其他一些共性来关联这两个表。
  • 两张表之间是否存在外键关系?您想加入姓名字段还是其他字段?
  • 是的,这两个表都有“名称”列。所以 db.data 将有 10 个条目由名称汇总,例如鲍勃。 db.info 将为 Bob 提供 1 个条目,其中包含有关他的信息,即 y 或 n 状态列中的信息之一。我需要 bob 从 db.data 提交的所有条目,但状态字段在 db.info 中设置为 n

标签: mysql sql join


【解决方案1】:

我想这就是你想要的:

select d.name, d.dateadded
  FROM db.info i, db.data d 
  WHERE i.name = d.name
    AND i.status = 'n';

【讨论】:

    【解决方案2】:

    据我了解,每个name 列中的数据对于两个表来说都是相同的。所以JOIN 应该在这里工作:

    SELECT db.data.*
    FROM db.data
    INNER JOIN db.info ON db.data.name = db.info.name
    WHERE db.info.status = 'n'
    

    【讨论】:

    • 当新的回复栏弹出时,我正在输入相同的查询!
    【解决方案3】:

    您可以在两个表之间使用连接名称

    SELECT d.name, d.date
    FROM db.data d
        JOIN db.info i ON d.name = i.name
    WHERE i.status = 'N'
    ORDER BY d.date
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 2011-05-22
      • 2015-11-13
      • 1970-01-01
      相关资源
      最近更新 更多