【问题标题】:Help with SQL multi-table querySQL多表查询帮助
【发布时间】:2011-07-16 02:35:37
【问题描述】:

我希望有人可以帮助我进行 MySQL 查询。

我正在尝试在 MySQL 数据库中创建一个查询,该查询在 Table_A 的 column_1 中查找与字符串“foo”匹配的所有行,然后在 Table_A 的 column_2 中使用“foo”搜索这些行以及“bar”的所有值返回 Table_b 中包含 column_8 中“bar”的所有行。

我的起始查询是:

SELECT * FROM TABLE_A WHERE column_1 LIKE 'foo';

上述查询仅在 Table_A 的 column_1 中查找与字符串 'foo' 匹配的所有数据。我需要添加什么代码来获取上述结果并使用 Table_A column_2 在 Table_B 的 column_8 中搜索匹配项?我似乎无法弄清楚如何执行此查询。

提前感谢您提供的任何帮助。

【问题讨论】:

  • 您的请求没有任何意义。 Table_ATable_B 之间有关系吗?如前所述,您甚至不需要Table_A

标签: mysql sql database


【解决方案1】:

从您的描述中不清楚这是否正确,但听起来您正在寻找JOIN

SELECT * 
FROM 
    TABLE_A a
  INNER JOIN TABLE_B b 
  ON a.column_2 = b.column_8
 WHERE 
    a.column_1 LIKE 'foo'
     and a.column_2 = 'bar'

【讨论】:

  • 谢谢!说真的,感谢您花时间阅读我的复杂描述。您的代码运行良好!
【解决方案2】:

您可以使用子查询选择表 b 中的值与表 A 中的列进行比较:

select * from tableA
Where column1 = 'foo'
and column2 in (select disitnct column8 from tableB where xxxxxxxxx)

【讨论】:

  • 您可以通过选择并按下{} 按钮来格式化您的代码。
【解决方案3】:

http://dev.mysql.com/doc/refman/5.0/en/join.html

例如:

SELECT * FROM TABLE_A 
LEFT JOIN TABLE_B 
USING(COLUMN TO MATCH ON)
WHERE TABLE_A.column_1 LIKE 'foo' 
AND  TABLE_B.column_8 LIKE 'bar';

我并不完全清楚您实际上要做什么,所以这可能不是您需要的确切代码。

【讨论】:

  • 谢谢!我完全忘记了:)
【解决方案4】:

从 TABLE_A 中选择 * INNER JOIN TABLE_B ON TABLE_A.COLUMN_1 = 'foo' AND TABLE_A.COLUMN_2 = 'bar' AND TABLE_B.COLUMN_8 = 'bar'

这可以在 SQL 服务器上工作,在 MySQL 上可能是一样的。试试看! 您可以在连接上使用多个标准。

【讨论】:

    猜你喜欢
    • 2010-11-24
    • 2021-02-09
    • 1970-01-01
    • 2010-10-20
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多