在我网站的一部分,用户输入多个搜索词。这些搜索词中的每一个都可能返回 0 行,或返回几行。我对所有搜索执行 UNION 并获取行。
如果我可以在响应中获取所有搜索词,无论它们是否返回任何行,事情都会容易得多。有没有办法从本质上将字符串(在本例中为搜索词)左连接到 SELECT 查询?
更多信息更新:
我有一个包含字段 Title 的 Books 表。
用户最多输入 10 个标题 search_terms,我目前对所有这些执行 UNION 以获得匹配行。所以这就像
SELECT $s[0] AS Search_Term,* WHERE Title LIKE '%$s[0]%' UNION
SELECT $s[1] AS Search_Term,* WHERE Title LIKE '%$s[1]%' ...etc
我希望这样,如果给定搜索没有结果,我仍然会返回 Search_Term 以及 NULL 标题。
最佳答案
我想这就是他想要的:
--结果--
Search Term____Title________________________________Author______Call No
cats How to Care for Millions of Cats JohnB B.342
kittens Why Kittens are your only Friends Old Lady L.4239
rabies null null null
etc.
也许是这样的:
SELECT
CASE count
count > 0
'Search Term', books.title 'Title', books.author 'Author', books.call_no 'Call No'
count <= 0
'Search term 1'
END CASE
FROM
(SELECT COUNT('Search term 1') count, 'Search term 1' 'Search Term' ,*
FROM books
WHERE books.title LIKE 'Search term 1');
(不过你必须解决问题)
关于sql - 字符串的左连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3445191/