Table of Contents
回复讨论(解决方案)
Home Backend Development PHP Tutorial mysql一行对应多列的关联查询问题,有实例及详细描述,

mysql一行对应多列的关联查询问题,有实例及详细描述,

Jun 23, 2016 pm 01:49 PM
association Example Inquire

有两个表

t1表有 4个字段  id,city_id1,city_id2,city_id3

t2表有2个字段 id,city_name

t1表中的city_id1,2,3都是和t2表中的id对应

例如:

 t1表有一条记录   1,26,29,50

t2表有三条记录 
26  北京
29  上海
50  天津

现在我的需求是  希望能一条sql语句查出来t1中这条记录,并显示city_id1,2,3对应的城市 例如
结果: 1,北京,上海,天津

sql语句应该怎么写?  


回复讨论(解决方案)

1

select id,  (select city_name from t2 where id=t1.city_id1) as city_name1,  (select city_name from t2 where id=t1.city_id2) as city_name2,  (select city_name from t2 where id=t1.city_id3) as city_name3 from t1

Copy after login

sql斑竹说了,我说另一种解决思路~
写一个函数,定义一个static变量$city数组,让它以城市id为键,城市名称为值
每次在后台编辑城市数据,就生成一个序列化城市数据的文件
系统启动时让那个静态变量读取文件
这个函数,传入城市id,就根据$city立刻返回城市名称
因为是静态变量,在单个请求中多次调用的开销不大,就是初始化需要读一个文件
这样可以解决你网站中所有靠城市id转换名称的需求

sql斑竹说了,我说另一种解决思路~
写一个函数,定义一个static变量$city数组,让它以城市id为键,城市名称为值
每次在后台编辑城市数据,就生成一个序列化城市数据的文件
系统启动时让那个静态变量读取文件
这个函数,传入城市id,就根据$city立刻返回城市名称
因为是静态变量,在单个请求中多次调用的开销不大,就是初始化需要读一个文件
这样可以解决你网站中所有靠城市id转换名称的需求



事实上我现在是每次查出一个这样的城市数组备用 然后传入city_id得到城市名

你说的方法相当于将这个数组缓存   挺不错的


xu大的方法可以实现但是看起来效率不会很高  我之前还以为mysql能高效的处理这种匹配关系~~~ 看来只能先用缓存了

事实上我现在是每次查出一个这样的城市数组备用 然后传入city_id得到城市名

你说的方法相当于将这个数组缓存   挺不错的


xu大的方法可以实现但是看起来效率不会很高  我之前还以为mysql能高效的处理这种匹配关系~~~ 看来只能先用缓存了



如果城市太多,这样缓存感觉也不是办法
每个请求都要读文件,反序列化,装入内存
没有实际测试过这个办法和sql比各有哪方面的强项
灵光一闪,又有个点子
在需要打印城市名称时,先写成{CITY:123}这种形式
在页面底部ob_get_clean,用正则把这些东西挖出来,去除重复id,然后根据这一组不重复id查询数据库,再把名称替换回去
这个办法可能消耗多一点CPU,但不用读取硬盘,关于城市的数据库操作也是一次完成

两种方法都尝试了 最后还是用了老xu的方法  效率可以接受   或许是表比较小的缘故

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. How to Fix Audio if You Can't Hear Anyone
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: How To Unlock Everything In MyRise
3 weeks ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

12306 How to check historical ticket purchase records How to check historical ticket purchase records 12306 How to check historical ticket purchase records How to check historical ticket purchase records Mar 28, 2024 pm 03:11 PM

Download the latest version of 12306 ticket booking app. It is a travel ticket purchasing software that everyone is very satisfied with. It is very convenient to go wherever you want. There are many ticket sources provided in the software. You only need to pass real-name authentication to purchase tickets online. All users You can easily buy travel tickets and air tickets and enjoy different discounts. You can also start booking reservations in advance to grab tickets. You can book hotels or special car transfers. With it, you can go where you want to go and buy tickets with one click. Traveling is simpler and more convenient, making everyone's travel experience more comfortable. Now the editor details it online Provides 12306 users with a way to view historical ticket purchase records. 1. Open Railway 12306, click My in the lower right corner, and click My Order 2. Click Paid on the order page. 3. On the paid page

How to check your academic qualifications on Xuexin.com How to check your academic qualifications on Xuexin.com Mar 28, 2024 pm 04:31 PM

How to check my academic qualifications on Xuexin.com? You can check your academic qualifications on Xuexin.com, but many users don’t know how to check their academic qualifications on Xuexin.com. Next, the editor brings you a graphic tutorial on how to check your academic qualifications on Xuexin.com. Interested users come and take a look! Xuexin.com usage tutorial: How to check your academic qualifications on Xuexin.com 1. Xuexin.com entrance: https://www.chsi.com.cn/ 2. Website query: Step 1: Click on the Xuexin.com address above to enter the homepage Click [Education Query]; Step 2: On the latest webpage, click [Query] as shown by the arrow in the figure below; Step 3: Then click [Login Academic Credit File] on the new page; Step 4: On the login page Enter the information and click [Login];

Comparison of similarities and differences between MySQL and PL/SQL Comparison of similarities and differences between MySQL and PL/SQL Mar 16, 2024 am 11:15 AM

MySQL and PL/SQL are two different database management systems, representing the characteristics of relational databases and procedural languages ​​respectively. This article will compare the similarities and differences between MySQL and PL/SQL, with specific code examples to illustrate. MySQL is a popular relational database management system that uses Structured Query Language (SQL) to manage and operate databases. PL/SQL is a procedural language unique to Oracle database and is used to write database objects such as stored procedures, triggers and functions. same

How to check the activation date on Apple mobile phone How to check the activation date on Apple mobile phone Mar 08, 2024 pm 04:07 PM

If you want to check the activation date using an Apple mobile phone, the best way is to check it through the serial number in the mobile phone. You can also check it by visiting Apple's official website, connecting it to a computer, and downloading third-party software to check it. How to check the activation date of Apple mobile phone Answer: Serial number query, Apple official website query, computer query, third-party software query 1. The best way for users is to know the serial number of their mobile phone. You can see the serial number by opening Settings, General, About This Machine. . 2. Using the serial number, you can not only know the activation date of your mobile phone, but also check the mobile phone version, mobile phone origin, mobile phone factory date, etc. 3. Users visit Apple's official website to find technical support, find the service and repair column at the bottom of the page, and check the iPhone activation information there. 4. User

How to use Oracle to query whether a table is locked? How to use Oracle to query whether a table is locked? Mar 06, 2024 am 11:54 AM

Title: How to use Oracle to query whether a table is locked? In Oracle database, table lock means that when a transaction is performing a write operation on the table, other transactions will be blocked when they want to perform write operations on the table or make structural changes to the table (such as adding columns, deleting rows, etc.). In the actual development process, we often need to query whether the table is locked in order to better troubleshoot and deal with related problems. This article will introduce how to use Oracle statements to query whether a table is locked, and give specific code examples. To check whether the table is locked, we

Discuz database location query skills sharing Discuz database location query skills sharing Mar 10, 2024 pm 01:36 PM

Forum is one of the most common website forms on the Internet. It provides users with a platform to share information, exchange and discuss. Discuz is a commonly used forum program, and I believe many webmasters are already very familiar with it. During the development and management of the Discuz forum, it is often necessary to query the data in the database for analysis or processing. In this article, we will share some tips for querying the location of the Discuz database and provide specific code examples. First, we need to understand the database structure of Discuz

How to automatically associate MySQL foreign keys and primary keys? How to automatically associate MySQL foreign keys and primary keys? Mar 15, 2024 pm 12:54 PM

How to automatically associate MySQL foreign keys and primary keys? In the MySQL database, foreign keys and primary keys are very important concepts. They can help us establish relationships between different tables and ensure the integrity and consistency of the data. In actual application processes, it is often necessary to automatically associate foreign keys to the corresponding primary keys to avoid data inconsistencies. The following will introduce how to implement this function through specific code examples. First, we need to create two tables, one as the master table and the other as the slave table. Create in main table

The relationship between the number of Oracle instances and database performance The relationship between the number of Oracle instances and database performance Mar 08, 2024 am 09:27 AM

The relationship between the number of Oracle instances and database performance Oracle database is one of the well-known relational database management systems in the industry and is widely used in enterprise-level data storage and management. In Oracle database, instance is a very important concept. Instance refers to the running environment of Oracle database in memory. Each instance has an independent memory structure and background process, which is used to process user requests and manage database operations. The number of instances has an important impact on the performance and stability of Oracle database.

See all articles