我们把这张桌子叫做terms_relation:

+---------+----------+-------------+------------+------------+--+
| term_id | taxonomy | description | created_at | updated_at |  |
+---------+----------+-------------+------------+------------+--+
|       1 | categ    | non         | 3434343434 |   34343433 |  |
|       2 | categ    | non         | 3434343434 | 3434343434 |  |
|       3 | tag      | non         | 3434343434 | 3434343434 |  |
|       4 | tag      | non         | 3434343434 | 3434343434 |  |
+---------+----------+-------------+------------+------------+--+

这是表terms:

+----+-------------+-------------+
| id |    name     |    slug     |
+----+-------------+-------------+
|  1 | hello       | hello       |
|  2 | how are you | how-are-you |
|  3 | tutorial    | tutorial    |
|  4 | the end     | the-end     |
+----+-------------+-------------+

如何 Select 表terms和表terms_relation中的所有行,其中表terms_relation中的分类是categ?我需要两个查询,还是可以使用join语句?

推荐答案

试试这个(子查询):

SELECT * FROM terms WHERE id IN 
   (SELECT term_id FROM terms_relation WHERE taxonomy = "categ")

或者你可以试试这个(加入):

SELECT t.* FROM terms AS t 
   INNER JOIN terms_relation AS tr 
   ON t.id = tr.term_id AND tr.taxonomy = "categ"

如果要接收来自两个表的所有字段:

SELECT t.id, t.name, t.slug, tr.description, tr.created_at, tr.updated_at 
  FROM terms AS t 
   INNER JOIN terms_relation AS tr 
   ON t.id = tr.term_id AND tr.taxonomy = "categ"

Mysql相关问答推荐

如何计算超过特定数字的所有不同ID组,然后返回这些ID?

MySQL嵌套的内连接使查询变得很慢-解决方案?

MySQL-如何检测时间戳中的一天

提高bash脚本从大型gml文件读取数据的效率

最终的自联表是如何记住关联的呢?

如何确保 SQL 记录的列不引用它自己的主键?

如何优化使用多个 LEFT JOIN 和 GROUP BY 子句的慢速 MySQL 查询?

MySQL - 如何查询涉及前面计算值的表结果

根据单个日期字段获取范围/天数

JOOQ:如何将 POJO 列序列化为 JSON

MySQL 视图

MySQLi count(*) 总是返回 1

没有 JDBC 类型的方言映射:1111

MySQL函数查找两个日期之间的工作日数

获取Count(*)占GROUP BY中所有项目数的百分比

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

使用 Java 通过 SSH 连接到远程 MySQL 数据库

判断多个列的一个值

MySQL连接查询使用like?

Mysql 错误:try 转储表空间时,指定为定义者的用户 ('mysql.infoschema'@'localhost') 不存在'