AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 2657
Accepted
David LeBauer
David LeBauer
Asked: 2011-05-12 11:28:31 +0800 CST2011-05-12 11:28:31 +0800 CST 2011-05-12 11:28:31 +0800 CST

我可以自动执行 MySQL 查询中的“on”语句吗?

  • 772

背景

在 QA/QC 过程中,我正在编写大量具有多个连接的查询。我正在使用 MySQL。

我想知道如何(如果)我可以简化连接语句,例如通过设置要连接的默认字段。

我的表以它们包含的对象的复数形式命名:

 names
 types
 actions
 surnames
 names_surnames

names_surnames多对多查找表在哪里

主键总是id,外键总是,例如

 names.type_id
 names.action_id
 names_surnames.name_id
 names_surnames.surname_id

我的加入会是这样的

select names.col1 
from names join types on names.type_id = type.id
           join actions on names.action_id = actions.id;

问题

有没有办法让 MySQL 始终假定表将与 连接on thistables.thattable_id = thattable.id?

mysql join
  • 3 3 个回答
  • 145 Views

3 个回答

  • Voted
  1. Mike Sherrill 'Cat Recall'
    2011-05-12T12:33:20+08:002011-05-12T12:33:20+08:00

    如果列在“两个”表中的名称相同,我认为您可以使用NATURAL JOIN. 虽然这对您不起作用,但命名的一致性应该仍然允许您使用脚本语言生成查询——或者至少是连接子句。

    • 3
  2. Best Answer
    Jack Douglas
    2011-05-13T01:40:20+08:002011-05-13T01:40:20+08:00

    如何为重复使用的连接创建视图?

    例如:

    create view my_view as 
    select names.id as name_id, names.type_id, names.action_id, ...
    from names join types on names.type_id = type.id
               join actions on names.action_id = actions.id;
    
    • 3
  3. RolandoMySQLDBA
    2011-05-12T14:30:18+08:002011-05-12T14:30:18+08:00

    如果 JOIN 中涉及的表共享同名字段,
    则可以使用 JOIN 语法的 USING 子句。

    例如

    如果操作表将 action_id 作为主键而不是 id
    ,并且类型表将 type_id 作为主键而不是 id

    那么查询可以重写为

    select names.col1 
    from names join types USING (type_id)
               join actions USING (action_id);
    

    试试看 !!!

    • 2

相关问题

  • 是否有任何 MySQL 基准测试工具?[关闭]

  • 我在哪里可以找到mysql慢日志?

  • 如何优化大型数据库的 mysqldump?

  • 什么时候是使用 MariaDB 而不是 MySQL 的合适时机,为什么?

  • 组如何跟踪数据库架构更改?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    您如何显示在 Oracle 数据库上执行的 SQL?

    • 2 个回答
  • Marko Smith

    如何选择每组的第一行?

    • 6 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    我可以查看在 SQL Server 数据库上运行的历史查询吗?

    • 6 个回答
  • Marko Smith

    如何在 PostgreSQL 中使用 currval() 来获取最后插入的 id?

    • 10 个回答
  • Marko Smith

    如何在 Mac OS X 上运行 psql?

    • 11 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Marko Smith

    将数组参数传递给存储过程

    • 12 个回答
  • Martin Hope
    Manuel Leduc PostgreSQL 多列唯一约束和 NULL 值 2011-12-28 01:10:21 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Stuart Blackler 什么时候应该将主键声明为非聚集的? 2011-11-11 13:31:59 +0800 CST
  • Martin Hope
    pedrosanta 使用 psql 列出数据库权限 2011-08-04 11:01:21 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST
  • Martin Hope
    BrunoLM Guid vs INT - 哪个更好作为主键? 2011-01-05 23:46:34 +0800 CST
  • Martin Hope
    bernd_k 什么时候应该使用唯一约束而不是唯一索引? 2011-01-05 02:32:27 +0800 CST
  • Martin Hope
    Patrick 如何优化大型数据库的 mysqldump? 2011-01-04 13:13:48 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve