我有一个看起来像这样的表结构:
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项目和网站上的所有其他项目。这样做的最佳方式是什么?
答案 0 :(得分:0)
您需要加入2个表格,将items_id
中的table_values
与id
表格中的table_items
相关联(标题为Hello
)
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_items.id将与table_values.items_id相同)
答案 1 :(得分:0)
我找到了我的问题的解决方案,它是使用索引,当然还要加入表格。谢谢你的所有答案。
答案 2 :(得分:0)
您可以使用此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
答案 3 :(得分:-1)
使用INNER JOIN
SELECT table_values.*
FROM table_values
INNER JOIN table_items
ON table_items.title LIKE CONCAT(table_values.value, '%')