[英]SQL Server : select all rows where Column does not contain any value from dynamic table of values
[英]Select matching rows from a table where either one of two columns contain any value from a list of values
您能幫我對Microsoft SQL Server 2012數據庫進行SQL查詢嗎? 我有一個像這樣的表結構:
User
----------------------
Id int
UserName nvarchar
Likeable
---------------------
Id int
Name nvarchar
UserLike
----------------------
Id int
UserId int
LikeableId int
Book
-----------------------
Id int
Name nvarchar
Author nvarchar
Description nvarchar
AmazonUrl nvarchar
因此,為了獲得用戶喜歡的事物的名稱,我使用以下查詢:
SELECT Name
FROM [User] u JOIN UserLike ul ON u.Id = ul.UserId
JOIN Likeable l ON l.Id = ul.LikeableId;
我們將該查詢稱為查詢1 。
查詢1的結果:
Name
----------
Python
C#
Kotlin
我想要的是:
現在,我想返回一個DISTINCT結果集的書,即Book表的所有列,其中書名或書說明包含查詢1的結果中的任何單詞。 這是我的SQL技能停止的地方。
我想在Java PreparedStatement
使用此查詢,因此,如果您可以堅持使用常規查詢而不是任何奇特的數據結構或存儲過程,那就太好了。
我將使用Microsoft SQL Server 2012作為數據庫。
您可以使用JOIN
進行此操作。 。 。 但使用LIKE
或CHARINDEX()
作為條件:
SELECT b.*
FROM Book b JOIN
(SELECT Name
FROM [User] u JOIN
UserLike ul
ON u.Id = ul.UserId JOIN
Likeable l
ON l.Id = ul.LikeableId
) n
ON b.title LIKE '%' + n.name + '%' OR
b.description LIKE '%' + n.name + '%';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.