sql - 字符串的左连接

标签 sql mysql select left-join

在我网站的一部分,用户输入多个搜索词。这些搜索词中的每一个都可能返回 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/

相关文章:

sql - DB2 使用序列号进行更新,但仅在条件发生时增加

PHP-选择然后插入时是否需要fetch_array

mysql - 更改 PDO 中的 SQL Server 列

mysql - 如何按日期选择登录总数?

c - select() 函数在 winsock 中失败

java - 参数化查询 : Check if field is in array of values in SELECT statement

mysql - 如何为 MySQL 客户端设置默认寻呼机?

php - 在发送到 MySQL 之前拆分数组数据

mysql - 在mysql中选择最大记录

sql - TSQL CTE(公用表表达式)错误