一個欄位儲存多個ID時的查詢
當在一張表的某個欄位中儲存了另外一張表的多個ID時常用查詢
二、準備
假設有一部落格,每一個主題允許有多個類別。資料庫設計時建了類別和主題兩張表,主題對類別的關聯設定在主題表中。
- -- 類別表DDL
- CREATETABLE `T_CATEGORYS` (
- `C_ID` int(11) NOTNULL,
- `C_NAME` varchar(255) NOTNULL,
- PRIMARYKEY (`C_ID`)
- )
- -- 主題表DDL
- CREATETABLE `T_TOPIC` (
-
`T_ID` int(11) NOT
- `T_NAME` varchar(255) NOTNULL,
- `T_CATEGORYS` varchar(128) NOTNULL,
- PRIMARYKEY (`T_ID`)
- )
- -- 準備類別資料
- INSERTINTO `T_CATEGORY` (`C_ID`, `C_NAME`) VALUES ('1', 'Struts');
- INSERTINTO `T_CATEGORY` (`C_ID`, `C_NAME`) VALUES ('2', 'Spring');
-
INSERTINTO `T_CATEGORY` (`C_ID`, `C_NAME`)
- INSERTINTO `T_CATEGORY` (`C_ID`, `C_NAME`) VALUES ('4', 'Hibernate');
- -- 準備主題資料
- INSERTINTO `xilen_dev`.`T_TOPIC` (`T_ID`, `T_NAME`, `T_CATEGORYS`) VALUES ('1', 'SSI整合示例', '1,2,3');
-
INSERTINTO `xilen_dev`.`T_TOPIC` (`T_ID`, `T_NAME`, `T_CATEGORYS`) VALUES ('2', 'SSH整合示例'
三、查詢
1、查詢多ID的欄位中包含某個ID的記錄
SQL:
- -- 查詢類別包含了iBatis(id=3)的主題記錄
- SELECT * FROM T_TOPIC WHERE FIND_IN_SET(3, T_CATEGORYS)
2、查詢多ID欄位中這些ID所代表的記錄
SQL:
- -- 查詢主題 SSH整合示例(id=2) 包含的類別記錄
- SELECT * FROM T_CATEGORY c WHERE (SELECT FIND_IN_SET(c.C_ID,t.T_CATEGORYS) from T_TOPIC t where t.T_ID=2)
3、查詢時將多ID的欄位的ID轉換為對應的標識
SQL:
- -- 查詢主題表時將類別的ID轉換為類別的NAME
- SELECT t.T_ID AS topicId,
- (SELECT GROUP_CONCAT(c.C_NAME) FROM T_CATEGORY c WHERE FIND_IN_SET(c.C_ID,t.T_CATEGORYS)) AS categoryName
- FROM T_TOPIC t
4、補充
FIND_IN_SET函式預設是以符號 , 作為分割符的,如果多ID欄位使用的這個預設的分隔符,而是以如 | 的符號作為分隔符,那麼:
- -- 非 , 作為分隔符時,先REPLACE函式替換它
- SELECT * FROM T_TOPIC WHERE FIND_IN_SET(3, REPLACE(T_CATEGORYS,'|',','))
相關推薦
一個欄位儲存多個ID時的查詢
一、說明 當在一張表的某個欄位中儲存了另外一張表的多個ID時常用查詢 二、準備 假設有一部落格,每一個主題允許有多個類別。資料庫設計時建了類別和主題兩張表,主題對類別的關
用一個欄位儲存多個圖片或檔案路徑
有時我們表中的一個產品記錄,可能沒有圖片,也可能有一個或多個圖片,怎麼儲存這些資訊呢?難道用10個或更多的欄位來儲存,但大多數行它們都是空的呀,怎麼辦? 利用Windows下檔名中不能用的非法字元,Url中不能用的非法字元,在資料庫中用一個欄位中儲存全部圖片路徑。 (1)
mysql 欄位儲存多個值 ,判斷一個值是否在其中
表C_file,其中有個欄位是spile,他存的是字元形式,例如:1,2,10,11 C_file ID spile 1 2,10,11 2 2,3,20,22 3 1,6,8 4 5,6,1,9 SQL: select
thinkphp5 一個欄位對應多個模糊查詢
$condition['kname'] = array(array('like','%保健%'), array('like','%護膝%'), array('like','%保健護膝護腰護頸%'), 'or'); 如果是動態的多個條件可以如下: $con
mysql表單一欄位是多個id組成的字串,查詢方法
借鑑:mysql使用instr達到in(字串)的效果 結論:select * from 表名where INSTR(CONCAT(字串),CONCAT(表id)) 問題來源:一表中的某欄位是另一表的外
sql查詢find_in_set,欄位包含多個ID,並用逗號分開
比如:查詢carouselPicIds輪播圖中包含圖片ID為1的商品則:SELECT * from product where find_in_set('1',carouselPicIds);查詢結果為第一條資料,第二條資料不會被查出來,所以find_in_set方法是以逗號
一個欄位有多個值,同時count出來
一個欄位rvalue有三個值 想用一個sql語句同時輸出三個count值 select date_format(createDate, '%m/%d') datef, count(coupon
tp5同一欄位的多個模糊條件查詢
public function test() { $map['r_name'] = [['like', '普通%'], ['like', '牛逼%'], ['like', '可愛%'], 'or']; $list = Db::table("tp_role")
mysql正則表示式,實現多個欄位匹配多個like模糊查詢
現在有這麼一個需求 一個questions表,欄位有題目(TestSubject),選項(AnswerA,AnswerB,AnswerC,AnswerD,AnswerE) 要求欄位不包含png,jpg,jpeg,gif 正常情況下會這麼寫 select * from questions
資料讀取器具有多個欄位。多個欄位對於儲存過程中的EDM原語或列舉型別無效
報錯程式碼: SqlParameter voteFrom = new SqlParameter("@voteFrom", workFlow.VoteFrom); SqlParameter voteTo = new SqlParameter("@voteTo",
oracle儲存過程將某張表一個欄位的多值分開成多條資料插入到一張新表
create or replace PROCEDURE PRO_MANDATESCOPE (dataid in varchar2,tablename in varchar2 ) AS
mysql查詢:同一個欄位滿足多個條件的對應欄位
比如查詢patient_id,對應的code_id分別等於1,2,3 select distinct patient_id from qs_patient_code WHERE code_id = 1 or code_id = 3 or code_id = 2
前端 JQuery中獲取一個div下的多個id值
獲取所有的Id值,方法是通過div.class獲取全域性的值,然後再提取具體的Id值 方法一:用for迴圈,因為$("div.class")獲取的是一個數組,通過迴圈讀取出陣列中的每一個元素: var articleIdList = new Array(); var h3=$("div
parttion by ~~~針對某個欄位或多個欄位重複,資料只取前n條。問題例子:1.主評論下的評論按著 時間正序最多隻取前5條 2.獲取最新登入記錄......
分組目前已知partition by、group by partition by用於給結果集分組分割槽,如果沒有指定那麼它把整個結果集作為一個分組,最後顯示具體資料 group by:通過所查詢的資料的某一欄位或屬性進行分組,最後顯示組資料,而不是具體資料,因為select 後面的所有列中,沒有使用聚合函
SQL 中拆分由逗號分割的欄位為多個欄位
測試準備建立表並填充資料USE [zws]GO/****** Object: Table [dbo].[a] Script Date: 2018/5/3 16:28:28 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER
c語言一個字元變數儲存多個字元
#include<stdio.h> int main() { char s; char a = 'a'; scanf("%s",&s); printf("input word is:%s, %c\n",&a
hibernate實現查詢某實體的某個欄位的多個值的對應實體列表
在使用hibernate和資料庫互動時,可以是使用hibernate的session的各種操作資料庫方法,在實際使用中也常常結合hbm.xml檔案裡寫好的query執行塊,再通過setParameter方式設定引數後執行查詢獲取結果。其中經常使用的一個場景----hibern
在一個FragmentTransaction中進行多個操作時的注意事項
在一個FragmentTransaction中進行多個操作時要注意一些事情: 比如在一個FragmentTransaction中先後執行以下操作: 1. add一個Fragment 2. hide這個Fragment 3. show這個Fragment
【Oracle_SQL】查詢/刪除重複的資料(單個欄位和多個欄位條件)
oracle查詢/刪除重複的資料(單個欄位和多個欄位條件) 單個欄位: --查詢重複的全部資料(單個欄位) 思路: 1.根據欄位tid分組,數量大於1的表示tid欄位有重複的資料; 2.根據1查詢出來
Mysql 一個欄位定義成int型別,查詢時傳入String,會擷取字串
表定義: CREATE TABLE `ids` ( id int(11) not null auto_increment, PRIMARY KEY (id) );表中存在一些IDs: 111, 112, 113, 114 等. 查詢: SELECT