1. 程式人生 > >SQL 同時對多個表進行模糊查詢並自定義順序

SQL 同時對多個表進行模糊查詢並自定義順序

使用場景

類似qq主面板的搜尋框,可以輸入數字,字母(漢字首拼),中文進行模糊搜尋,可以搜到的結果有:qq號,暱稱,群號,群名稱等等。而這些內容可能存放在不同的表中,則需要對多個表的多個內容同時進行搜尋:(搜尋的欄位3個表中必須相同)

SQL語句

SELECT
	*
FROM
	(
		SELECT
			FLAG,
			SID,
			ID,
			NAME,
			MOBILEPHONE,
			1 AS userType
		FROM
			TAB_1
		UNION
			SELECT
				FLAG,
				SID,
				ID,
				NAME,
				MOBILEPHONE,
				2 AS userType
			FROM
				TAB_2
			UNION
				SELECT
					FLAG,
					SID,
					ID,
					NAME,
					MOBILEPHONE,
					3 AS userType
				FROM
					TAB_3
	) d
WHERE
	(
		d.NAME LIKE '%搜尋內容%'
		OR d.MOBILEPHONE LIKE '%搜尋內容%'
		OR d.ID LIKE '%搜尋內容%'
		OR d.SID LIKE '%搜尋內容%'
	)
AND d.FLAG != 3
ORDER BY
	userType ASC