1. 程式人生 > >sql when case 根據不同 case 查詢不同關聯表資訊

sql when case 根據不同 case 查詢不同關聯表資訊

根據不同的情況去查詢不同關聯表內容
1.有三張表如下
1.1.學生表 student

CREATE TABLE `student` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL,
  `class_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test`.`student` (`id`, `name`, `class_id`) VALUES ('1', 's1'
, '1');
INSERT INTO `test`.`student` (`id`, `name`, `class_id`) VALUES ('2', 's2', '2');

1.2.班級表1 class1

CREATE TABLE `class1` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test`.`class1` (`id`, `name`) VALUES
('1', '1班');

1.3.班級表2 class2

CREATE TABLE `class2` (
  `id` int(11) DEFAULT NULL,
  `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test`.`class2` (`id`, `name`) VALUES ('2', '2班');

1.4.班級表3 class3

CREATE TABLE `class3` (
  `id` int(11) DEFAULT
NULL, `name` varchar(255) CHARACTER SET utf8 DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
INSERT INTO `test`.`class3` (`id`, `name`) VALUES ('3', '3班');

2.實現效果:根據學生的 class_id 不同去不同的表取他們的班級資訊:比如學生的 class_id 為 1 則去 class1 取學生的班級資訊,class_id 為 2 則去 class2 取班級資訊

SELECT 
s.id,s.`name`,
case
s.class_id 
when 1 THEN c1.name
when 2 THEN c2.`name`
ELSE c3.name
END as className
FROM 
student s
LEFT JOIN class1 c1 on s.class_id=c1.id
LEFT JOIN class2 c2 on s.class_id=c2.id
LEFT JOIN class3 c3 on s.class_id=c3.id

查詢效果:

查詢效果

相關推薦

sql when case 根據不同 case 查詢不同關聯資訊

根據不同的情況去查詢不同關聯表內容 1.有三張表如下 1.1.學生表 student CREATE TABLE `student` ( `id` int(11) DEFAULT NULL, `name` varchar(255) CHARACTER

Sql使用SUM和UNION ALL 查詢兩張中指定欄位的和

1、t_test1表           t_test2表       2、查詢需求:求t_test1.num與t_test2.amount之和   方法一: SELECT

sql 建立某一使用者只能查詢訪問某些或檢視

use Charges GO ----------刪除-架構-角色-使用者----------------------------------------------- DROP SCHEMA [YXUSER] GO DROP SCHEMA [YX_VIEW] GO DRO

spring-boot 分頁查詢關聯

引言:由於公司轉型,使我原本android開發工程師,轉變為後臺開發工程師,對於後臺,除了大學利用servlet寫過些專案,其他就一無所知。公司使用spring-boot框架.那麼spring-boot框架究竟是什麼呢?Spring-boot是微框架,是由P

【mysql】mysql case when實現不同條件查詢

程式碼示例 SELECT SUM(CASE WHEN e.cost_audit_type = 1 AND date_format(e.cost_audit_time, '%Y-%m') = '2

SQL SERVER 中條件語句的查詢 case。。。 when。。。THEN...ELSE...END

case。。。 when。。。THEN…ELSE…END注意 sql server必須以end結尾 否則會導致執行錯誤 if語句還沒有看出來應該怎麼做。。。。 以下語句都沒有執行出來 哈哈哈2 我是笨死的 IIF(LEFT(hotelnm,1)=‘C’,LEFT(hotelnm,13),

Python中unittest 用不同的引數組合,測試同樣的行為;使test case根據引數多次執行

在某種情況下,需要用不同的引數組合,測試同樣的行為,我們希望從test case的執行結果上知道在測試什麼,而不是單單得到一個大的 test case; 此時如果僅僅寫一個test case並用內嵌迴圈來進行,那麼其中一個出了錯誤,很難從測試結果裡邊看出來問題 所以現在問

SQL的IF語句與case when then

MySQL的IF既可以作為表示式用,也可在儲存過程中作為流程控制語句使用,如下是做為表示式使用: IF表示式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回

[SQL server] IF ELSE 和 CASE WHEN 的用法

/*判斷一個數如果大於10,按10統計,如果小於0,按0統計*/ --方法a DECLARE @AA INT SET @AA=15 IF @AA>10 SELECT 10 ELSE IF @AA<0 SELECT 0 ELSE SELECT @AA --方法b DECLA

根據不同型別,不同的條件去列表查詢

在mybatis的mapper.xml中查詢為: <sql id="AbnormalLuggage">         a.id,         a.pass_name,         a.flight_date,         a.is_loss,   

sql 多條件顯示,case when then else edn詳細說明。

真的頭痛啊。為此語句,這樣記憶最好,如下: 遇到                XXX情況  就     XXX     遇不到就 XXX    結束 case when     ……       then    ……     else          ……  end

SQL Server和Oracle中case when then 的用法及when like 的使用

在日常開發中容易遇到一種情況,就是資料庫所存資料與頁面顯示不一致,需要進行轉換,但是又不想在程式中寫程式碼判斷轉換,這時候就可以用的case....when...then...進行判斷顯示,而在有些時候when後邊的資料可能要進行模糊查詢,在這時候就要用到when....l

MySQL中使用case when 語句實現多條件查詢的方法

SELECT * FROM wqgj WHERE ((SELECT CASE 1 WHEN condition1滿足條件 THEN 1 ELSE 0 END FROM wqgj) +(SELECT

SQL集萃(一) CaseWhen…Then 實現無表字段拼表格

       開發過程中,由於自己的sql經驗不足,而有些問題通過搜尋描述起來又比較複雜,或者問題與結果文不對題,因此寫該系列部落格,希望通過不斷的積累為自己和讀者提供一些參考。        業務

sql查詢不同區間數量

分割槽域查詢滿足條件的數量值:select t1.p1 as num1,t2.p2 as num2,t3.p3 as num3 from(select count(BASICPRICE) as p1 f

Linq_根據條件查詢兩個,並將返回不同型別的結果合併

var deliveryOrderDetail = from d in _context.DeliveryOrderDetails

根據條件查詢不同

SELECT              u.user_name As "fyUser.userName",             a.id AS "id",             a.del_flag AS "delFlag",             a.istatus

在Mybits中,根據頁面下拉列表當中不同條件,查詢不同

比如說: 情景:在頁面中的下拉列表中有student、teacher倆個數據項, 根據點選不同的資料項條件,進行檢索查詢。 在查詢語句當中會用到  <choose>     <whe

用一條SQL語句查詢一張得到不同條件的多個結果

一條語句,12個結果,12行,比較方便與1個dataGridView的現實。 我是用在C# Winform上的3層結構的開發上,用這個實現統計12個月每個月的銷售總額。現在就差統計表了,GDI功底比較差,還在研究呵呵。 SELECT A1.date 日期, SUM(A1.s

SQL 建立檢視訪問其他資料庫 & 不同資料庫表格的關聯查詢

我們訪問其它 SQL Server的資料庫,我們可以通過 OPENDATASOURCE (SQL Server 2000 以上版本支援) 來完成。 1.建立檢視的方式訪問資料庫 Create VIEW [dbo].[vTableName] AS Select *