【问题标题】:How to retrieve rows, based on column from other table如何根据其他表中的列检索行
【发布时间】:2015-09-29 10:31:46
【问题描述】:

我有 2 张桌子。

表 1

+-------+-------------+------+-----+---------+----------------+
|Field  | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Gene  | varchar(15) | YES  |     | NULL    |                |
| G_Cor | varchar(15) | YES  |     | NULL    |                |
| OMID  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

表 2:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| Sym_A | varchar(15) | YES  |     | NULL    |                |
| Sym_B | varchar(15) | YES  |     | NULL    |                |
| Int_Ty| varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

现在我已经从表 2 中检索 Sym_A 和 Sym_B,它们与表 1 中的 Gene 相同,我必须显示一个单独的表。

【问题讨论】:

  • 使用这样的连接 SELECT b.Sym_A, b.Sym_B FROM <table1> a INNER JOIN <table2> b ON a.Gene = b.Sym_A OR a.Gene = b.Sym_B
  • 将列条件放在你的sql的where子句中。
  • 或者您可以为每个表格提供一些数据来说明。
  • 感谢您的回复:-) 但我没有得到正确的答案。在表 1 中,我有近 3500 个条目。在表 2 中,我有 250880 个条目。现在我必须检查这 3500 个条目是否在表 2 中的 Sym_A 或 Sym_B 中?但我在表一中得到 150089 行。

标签: mysql sql select where-in


【解决方案1】:
SELECT t2.`Sym_A`,t2.`Sym_B`
FROM table 2 t2
JOIN table t1 ON (t2.`Sym_A`=t1.`Gene`) OR (t2.`Sym_B`=t1.`Gene`);

【讨论】:

    【解决方案2】:

    我了解您需要一个查询来检索表 2 中具有
    Sym_A=Gene OR Sym_B=Gene 的行,因为您的问题不是很清楚(如果您希望它们同时满足两者,只需将 OR 更改为 AND) 在这种情况下,以下查询将起作用:

    SELECT t2.Sym_A, t2.Sym_B
    FROM Table2 t2, Table1 t1
    WHERE (t2.Sym_A=t1.Gene) OR (t2.Sym_B=t1.Gene);
    

    【讨论】:

      猜你喜欢
      • 2015-05-30
      • 2012-07-07
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 2021-01-03
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      相关资源
      最近更新 更多