什么是使数据库可搜索的正确方法?

1yjd4xko  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(325)

我想让我的数据库可以搜索。我的一些表格是产品,类别,子类别,制造商,型号,品牌。我在查询中使用“%like%”,然后在表中使用union。我得到了一个结果,但问题之一是我无法得到表名。我想到的一个解决方案是创建一个包含4列的可搜索表:
id、可搜索术语(可以是sku、类别、子类别等)和可搜索术语的id。

doinxwow

doinxwow1#

您可以这样做: ...UNION ALL SELECT 'mytable' AS tablename, term FROM mytable ... 基本上,您可以在union的每个子选择中放入一个简单的字符串值和一个虚拟字段。在这种情况下,我只是叫它 tablename 值为 "mytable" 此示例表的名称。
所以每一行 mytable 将添加一个名为 tablename 字符串值为 mytable . 然后,在合并结果时,每个结果集(子选择)可以有一个不同的字符串值(在 tablename )在各自表的查询中。
你也可以参考这篇专门写在“虚拟专栏”上的文章
如何使用mysql select创建虚拟列?
我不知道我是否会说这是“正确”的方式,但它将粗暴地工作。
享受

r6hnlfcb

r6hnlfcb2#

既然您已经在使用union,为什么不在每个union子查询中添加被查询表的名称作为列,如:

SELECT 'table1' AS table_name, id, field1, field2
FROM table1
WHERE value LIKE ?
UNION
SELECT 'table2' AS table_name, id, field11, field12
FROM table2
WHERE value LIKE ?
UNION
...

当您获得数据时,您可以通过检查列table\u name来获得每个记录从中返回的表的名称。
注意:返回每一行的主键也是一个好主意,以使可能的进一步请求更容易。

相关问题