当前位置: 首页 > 知识库问答 >
问题:

如何从连接mysql中的两个表中选择特定范围的值?

马涵蓄
2023-03-14

我有两个表,我必须根据查询从两个表中选择值

我有两个表,如tab1、tab2,每个表都有相同的列姓名、年龄、工作、性别。在tab 2中,我有额外的列place

我必须从性别为男性的tab1和tab2中选择所有值

怎么办?

SELECT tab1.name,tab1.gender,tab1.age,tab2.place FROM tab1 INNER JOIN tab2 ON tab1.gender=mhdetail.gender where gender='male';

这是正确的吗?

共有3个答案

濮阳旭东
2023-03-14

您的查询将导致许多重复的行。因为它会变成多对多的关系。如果这两个表以任何方式相关,例如主键和外键关系,则使用这些键连接。否则使用上面答案中发布的联合。

任昊苍
2023-03-14

您不是在寻找联接。你想要一个联盟

SELECT *
FROM MyTable1
WHERE Gender = 'Male'

UNION -- Or 'UNION ALL' if you want duplicates.

SELECT *
FROM MyTable2
WHERE Gender = 'Male'

如果您有2个表,并且想要从2个表中获取信息,但只有一个表包含性别,则将使用连接:

SELECT *
FROM   MyTable1
JOIN   MyTable2 ON MyTable1.ID = MyTable1.ID
WHERE  MyTable1.Gender = 'Male'
章晗日
2023-03-14

您需要更具体地了解JOIN条件。如果两个表中都没有id,但姓名、性别、年龄的组合是唯一的,那么您可以这样做

SELECT t1.name,
       t1.gender,
       t1.age,
       t2.place 
  FROM tab1 t1 LEFT JOIN 
       tab2 t2 ON t1.gender = t2.gender AND
                  t1.name = t2.name AND
                  t1.age = t2.age    
 WHERE t1.gender='male';

这里是SQLFiddle

 类似资料:
  • 问题内容: 我需要基于连续数字(第N列)和这些数字涉及的相同“类别”(下面的C列)从表中提取连续范围。图形上看起来像这样: SQL Server是2005。谢谢。 问题答案: 结果 :

  • 问题内容: 我有一个带有id列和成千上万行的表。我获得了1000个ID的列表,用于对照其他表格数据进行检查。 ID没有按顺序存储。 ID列表也不按顺序排列。 当我使用这些ID选择表格数据时,仅返回990个结果,这意味着自该列表产生以来,其中10个结果已更改/被删除。如何从该数据范围中找到10个缺失值?这是我目前正在做的事情: 返回990个结果。我可以做类似的事情吗? 编辑:抱歉造成混乱。我应该提到

  • 问题内容: 理想情况下,我需要一个等于 但这是非法的。 我不能使用自动递增的字段。 row_number()是需要选择的行。 我该怎么办? 编辑:嗯,我使用iSql * plus进行练习,出于某些原因,使用limit和auto_increment是非法的。我最终创建了一个序列和一个触发器,并且每次输入一个条目时,ID都增加了1。 问题答案: 您可以使用代替。 如文档所述, 第一个参数指定要返回的第

  • 我的目标是创建一个函数,从给定的IP范围中选择一个IP地址。 目前我正在使用此功能: 我知道此函数只生成IP范围,但是在生成该范围后如何选择IP? 示例:我拥有给定的IP范围93.118.193.0-93.118.193.255。在此范围内,自动获取一个(例如:93.118.193.83)并将其设置为“远程地址”属性。如果已经设置了IP,则随机获取另一个IP(以便两个“远程地址”相同)。 我尝试使

  • 问题内容: 我的SQL Server数据库中有两个表。第一个是,第二个是。两个表中都有一列。 现在,我想从两个表中选择一个特定的值。 这就是我在做的 但是我的查询给出了错误。 问题答案:

  • 我有一个关系N x 1,,post->user有如下关系: post.php(模型): 注意:我不希望在我的post.php模型文件中有任何“硬编码”的内容,因为在不同的情况下,我可能希望同一关系有不同的列,所以我希望将关系保留在上