在列值表结构中搜索


Search in column value table structure

我得到了一个如下的表结构:

table_items
+----+-------+
| id | title |
+----+-------+
|  1 | Hello |
+----+-------+
table_values
+----+----------+--------------+---------------------+
| id | items_id |   columnname |        value        |
+----+----------+--------------+---------------------+
|  1 |        1 |  description | This is the desc... |
+----+----------+--------------+---------------------+
|  1 |        1 |        hobby | My hobby is comp... |
+----+----------+--------------+---------------------+

我不想在每个值字段中搜索Hello项目和网站上的所有其他项目。最好的方法是什么?

您需要连接这两个表,将table_values中的items_idtable_items表(标题为Hello)中的id链接起来

SELECT table_values.*
FROM table_items, table_values
WHERE table_items.title='Hello'
AND table_items.id=table_values.items_id

我假设您只需要table_value信息(正如我们所知,table_items.title是Hello,table_iitems.id将与table_values.items_id相同)

我找到了解决问题的方法,那就是使用索引,当然还有左联接表。谢谢你的回答。

您可以使用以下SQL SELECT命令:

SELECT table_items.title, table_values.columnname, table_values.value FROM table_items
INNER JOIN table_values ON table_items.id = table_values.items_id
WHERE table_items.title LIKE '%Hello%'
UNION
SELECT table_items.title, table_values.columnname, table_values.value FROM table_items
INNER JOIN table_values ON table_items.id = table_values.items_id
WHERE table_values.columnname LIKE '%Hello%' || table_values.value LIKE '%Hello%';

和SQLFiddle:http://sqlfiddle.com/#!2/11539/4

使用INNER JOIN

SELECT table_values.*
FROM table_values
INNER JOIN table_items
ON table_items.title LIKE CONCAT(table_values.value, '%')