如何从两个表中选择同一字段中具有相同值的行?
Posted
技术标签:
【中文标题】如何从两个表中选择同一字段中具有相同值的行?【英文标题】:How to select rows from two tables where both have the same value in the same field? 【发布时间】:2015-03-24 11:41:16 【问题描述】:我有两个具有相同列名的表。
两个表中都有一个名为 Call_Status
的字段。
我想从两个表中检索具有Call_Status="Open"
的记录。即我想要一个查询,它可以检索具有call_Status="Open"
的table1
的所有记录,然后从具有call_Status="Open"
的table2
检索所有记录
我不知道该怎么做,希望得到一些指导
【问题讨论】:
您的问题很难阅读 - 我已经对其进行了编辑,以便将来对其他人更有用。请确保您查看how to ask 以获得最佳答案。您还标记了mysql
和 ms-access
。在这种情况下,您使用哪个数据库可能并不重要,但通常您不太可能同时使用 both mysql
和 ms-access
。
【参考方案1】:
如果您想从第一个表中获取所有匹配的行,并从第二个表中获取所有匹配的行(而不是将行连接在一起),那么您可以使用联合。
SELECT column names FROM table1 WHERE call_status='Open'
UNION ALL
SELECT column names FROM table2 WHERE call_status='Open'
正如 Fionnuala 所指出的,您可以使用 UNION
而不是 UNION ALL
来获取唯一的行。
【讨论】:
谢谢老兄.. 成功了 请注意,UNION 用于唯一行,UNION ALL 用于更快的非唯一行。【参考方案2】:您可以使用连接查询。
SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.Call_Status=table2.Call_Status and table1.Call_Status='Open' ;
【讨论】:
它不工作。它显示如下错误:异常:[Microsoft][ODBC Microsoft Access Driver] 指定字段“Call_Date”可能引用 SQL 语句的 FROM 子句中列出的多个表。 您必须在表名前加上前缀:Select table1.Call_Status, table2.Call_Status From ... 如果你能提供你的表结构。我可以提供更好的解决方案。【参考方案3】:您可以通过属性 call_status 连接两个表,如下所示。
SELECT (Your column names)
FROM table1 INNER JOIN table2
ON Table1.call_status='open' and Table2.call_status='open';
【讨论】:
它不工作。它显示如下错误:异常:[Microsoft][ODBC Microsoft Access Driver] 指定字段“Call_Date”可能引用 SQL 语句的 FROM 子句中列出的多个表。 我认为是因为两个表都包含多个具有相同名称的列 我认为您的数据库中除了这个之外会有问题以上是关于如何从两个表中选择同一字段中具有相同值的行?的主要内容,如果未能解决你的问题,请参考以下文章