mysql一行对应多列的关联查询问题,有实例及详细描述,
有两个表
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语句应该怎么写?
回复讨论(解决方案)
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
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的方法 效率可以接受 或许是表比较小的缘故

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











12306 티켓 예매 앱의 최신 버전을 다운로드하세요. 모두가 매우 만족하는 여행 티켓 구매 소프트웨어입니다. 소프트웨어에서 제공되는 다양한 티켓 소스가 있어 매우 편리합니다. - 실명인증으로 온라인 구매가 가능합니다. 모든 사용자가 쉽게 여행티켓과 항공권을 구매하고 다양한 할인 혜택을 누릴 수 있습니다. 또한 사전에 예약하고 티켓을 얻을 수도 있습니다. 호텔을 예약하거나 차량으로 픽업 및 하차할 수도 있습니다. 한 번의 클릭으로 원하는 곳으로 이동하고 티켓을 구매할 수 있어 여행이 더욱 간편해지고 편리해집니다. 모든 사람의 여행 경험이 더욱 편안해졌습니다. 이제 편집자가 온라인으로 자세히 설명합니다. 12306명의 사용자에게 과거 티켓 구매 기록을 볼 수 있는 방법을 제공합니다. 1. 철도 12306을 열고 오른쪽 하단의 My를 클릭한 후 My Order를 클릭합니다. 2. 주문 페이지에서 Paid를 클릭합니다. 3. 유료페이지에서

Xuexin.com에서 내 학업 자격을 어떻게 확인하나요? Xuexin.com에서 학업 자격을 확인할 수 있습니다. 많은 사용자가 Xuexin.com에서 학업 자격을 확인하는 방법을 모릅니다. 다음으로 편집자는 Xuexin.com에서 학업 자격을 확인하는 방법에 대한 그래픽 튜토리얼을 제공합니다. 유저들이 와서 구경해 보세요! Xuexin.com 사용 튜토리얼: Xuexin.com에서 학업 자격을 확인하는 방법 1. Xuexin.com 입구: https://www.chsi.com.cn/ 2. 웹사이트 쿼리: 1단계: Xuexin.com 주소를 클릭합니다. 위의 홈페이지에 들어가려면 [교육 쿼리]를 클릭합니다. 2단계: 최신 웹페이지에서 아래 그림의 화살표와 같이 [쿼리]를 클릭합니다. 3단계: 새 페이지에서 [학점 파일에 로그인]을 클릭합니다. 4단계: 로그인 페이지에서 정보를 입력하고 [로그인]을 클릭합니다.

MySQL과 PL/SQL은 각각 관계형 데이터베이스와 절차적 언어의 특성을 나타내는 서로 다른 두 가지 데이터베이스 관리 시스템입니다. 이 기사에서는 구체적인 코드 예제를 통해 MySQL과 PL/SQL 간의 유사점과 차이점을 비교합니다. MySQL은 SQL(구조적 쿼리 언어)을 사용하여 데이터베이스를 관리하고 운영하는 인기 있는 관계형 데이터베이스 관리 시스템입니다. PL/SQL은 Oracle 데이터베이스 고유의 절차적 언어로 저장 프로시저, 트리거, 함수 등의 데이터베이스 개체를 작성하는 데 사용됩니다. 같은

제목: Oracle을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법은 무엇입니까? Oracle 데이터베이스에서 테이블 잠금은 트랜잭션이 테이블에 쓰기 작업을 수행할 때 다른 트랜잭션이 테이블에 쓰기 작업을 수행하거나 테이블에 구조적 변경(예: 열 추가, 행 삭제)을 수행하려고 할 때 차단된다는 것을 의미합니다. , 등.). 실제 개발 과정에서 관련 문제를 더 잘 해결하고 처리하기 위해 테이블이 잠겨 있는지 쿼리해야 하는 경우가 종종 있습니다. 이 기사에서는 Oracle 문을 사용하여 테이블이 잠겨 있는지 쿼리하는 방법을 소개하고 특정 코드 예제를 제공합니다. 테이블이 잠겨 있는지 확인하려면

애플 휴대폰을 이용하여 개통일을 확인하고 싶다면 휴대폰에 있는 일련번호를 통해 확인하는 것이 가장 좋은 방법이며, 애플 공식 홈페이지를 방문하여 컴퓨터에 연결한 후 세 번째 다운로드를 통해 확인할 수도 있습니다. - 그것을 확인하는 파티 소프트웨어. Apple 휴대폰의 활성화 날짜를 확인하는 방법은 무엇입니까? 답변: 일련번호 쿼리, Apple 공식 웹사이트 쿼리, 컴퓨터 쿼리, 타사 소프트웨어 쿼리 1. 사용자가 휴대폰의 일련번호를 아는 것이 가장 좋습니다. 설정, 일반, 이 기기 정보를 열어 일련번호를 확인할 수 있습니다. 2. 일련번호를 이용하면 휴대폰 개통일뿐만 아니라 휴대폰 버전, 휴대폰 원산지, 휴대폰 공장일 등을 확인할 수 있습니다. 3. 사용자는 Apple의 공식 웹 사이트를 방문하여 기술 지원을 찾고, 페이지 하단의 서비스 및 수리 열을 찾아 거기에서 iPhone 활성화 정보를 확인합니다. 4. 사용자

포럼은 인터넷에서 가장 일반적인 웹사이트 형태 중 하나입니다. 포럼은 사용자에게 정보를 공유하고 토론을 교환할 수 있는 플랫폼을 제공합니다. Discuz는 일반적으로 사용되는 포럼 프로그램이며 많은 웹마스터들이 이미 이에 대해 매우 잘 알고 있다고 생각합니다. Discuz 포럼을 개발하고 관리하는 동안 분석이나 처리를 위해 데이터베이스의 데이터를 쿼리해야 하는 경우가 종종 있습니다. 이 글에서는 Discuz 데이터베이스의 위치를 쿼리하기 위한 몇 가지 팁을 공유하고 구체적인 코드 예제를 제공합니다. 먼저 Discuz의 데이터베이스 구조를 이해해야 합니다.

Oracle 인스턴스 수와 데이터베이스 성능 간의 관계 Oracle 데이터베이스는 업계에서 잘 알려진 관계형 데이터베이스 관리 시스템 중 하나이며 엔터프라이즈 수준의 데이터 저장 및 관리에 널리 사용됩니다. Oracle 데이터베이스에서 인스턴스는 매우 중요한 개념입니다. 인스턴스는 메모리 내 Oracle 데이터베이스가 실행되는 환경을 의미합니다. 각 인스턴스는 사용자 요청을 처리하고 데이터베이스 작업을 관리하는 데 사용되는 독립적인 메모리 구조와 백그라운드 프로세스를 갖습니다. 인스턴스 수는 Oracle 데이터베이스의 성능과 안정성에 중요한 영향을 미칩니다.

MySQL 외래 키와 기본 키를 자동으로 연결하는 방법은 무엇입니까? MySQL 데이터베이스에서 외래 키와 기본 키는 서로 다른 테이블 간의 관계를 설정하고 데이터의 무결성과 일관성을 보장하는 데 도움이 되는 매우 중요한 개념입니다. 실제 애플리케이션 프로세스에서는 데이터 불일치를 방지하기 위해 외래 키를 해당 기본 키에 자동으로 연결해야 하는 경우가 많습니다. 다음은 구체적인 코드 예시를 통해 이 기능을 구현하는 방법을 소개합니다. 먼저 두 개의 테이블을 생성해야 합니다. 하나는 마스터 테이블이고 다른 하나는 슬레이브 테이블입니다. 메인 테이블에 생성
