【问题标题】:SELECT from multiple tables same data and ignore other columns从多个表中选择相同的数据并忽略其他列
【发布时间】:2020-04-23 00:10:47
【问题描述】:

我试图从共享一些公共数据的多个表中选择行

table1 和 table2 的常见数据是:namecontent BUT table2uname 而不是 name,但它们是相同的

table2 有一个额外的列用于dateU,我想忽略它们,但通过 U 搜索 table1 有一个名为 country 的额外列,我忽略了

实际上我正在运行 2 个查询而不是 1 个

我正在运行的两个查询是:

SELECT DISTINCT name, content FROM table1 WHERE name LIKE '%foo%'
SELECT DISTINCT uname, content, u FROM table2 WHERE uname LIKE '%foo%' AND U = 1

我尝试过类似的方法:

SELECT DISTINCT t1.*, t2.* FROM table1 t1, table2 t2 WHERE t1.name LIKE '%foo%' AND t2.uname LIKE '%foo%' AND t2.U = 1

但它不能按我的意愿工作,我怀疑它在性能方面是否好。

感谢您的帮助

【问题讨论】:

  • 样本数据和期望的结果真的很有帮助。

标签: mysql sql database mariadb


【解决方案1】:

根据您的描述,您想要一个带有过滤功能的JOIN

select . . .  -- whatever columns you want here
from table1 t1 join
     table2 t2
     on t1.name = t2.uname
where t1.name LIKE '%foo%' and t2.u = 1;

【讨论】:

  • 是否可以加入多个列?例如,如果来自 t2 的内容是 ucontent?
  • on t1.name = t2.uname 变成 on (t1.name = t2.uname) AND (t1.content = t2.ucontent) 对吧?
  • @niqqacoder 。 . .是的,如果那是您想要的 JOIN 条件。
猜你喜欢
  • 2011-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多