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集萃(一) Case…When…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 *