Mysql 在自由搜索中从另一个表中查找名称的SQL查询
我有一个包含特定对象名称的表。 假设它的列如下:id,other_id,name 我还有另一个表,它用“other_id”连接到前面的表,所以它的列是:other_id,name 要在常规搜索中查找特定对象,我使用了:Mysql 在自由搜索中从另一个表中查找名称的SQL查询,mysql,sql,sql-server,Mysql,Sql,Sql Server,我有一个包含特定对象名称的表。 假设它的列如下:id,other_id,name 我还有另一个表,它用“other_id”连接到前面的表,所以它的列是:other_id,name 要在常规搜索中查找特定对象,我使用了: WHERE `name` LIKE '%$search%'" 它工作得很好 但是,我还想搜索第二个表的名称 因此,基本上我有两个表,它们之间有一个连接id,我希望能够获得第一个表行,其名称类似于“搜索”,或者第二个表行连接到第一个表上的特定行,其名称也类似于“搜索”。 有什么想
WHERE `name` LIKE '%$search%'"
它工作得很好
但是,我还想搜索第二个表的名称
因此,基本上我有两个表,它们之间有一个连接id,我希望能够获得第一个表行,其名称类似于“搜索”,或者第二个表行连接到第一个表上的特定行,其名称也类似于“搜索”。
有什么想法吗?您可以在链接表格的ID上加入表格。然后,可以根据指定的任何条件选择所需的任何列
CREATE TABLE #TEST
(COL1 INT,
COL2 NVARCHAR(5))
CREATE TABLE #TEST2
(COL1 INT,
COL2 NVARCHAR(5))
INSERT INTO #TEST
VALUES ('1', 'BILL'), ('2', 'NANCY')
INSERT INTO #TEST2
VALUES ('1', 'RED'), ('2', 'BLUE')
SELECT A.COL2
,B.COL2
FROM #TEST A
JOIN #TEST2 B
ON A.COL1 = B.COL1
WHERE A.COL2 LIKE '%BILL%'
此示例将从两个表中选择第2列,其中table1.column1类似于“%Bill%”。如果您希望从两个表中获得结果,可以执行以下操作:
SELECT id,other_id,name FROM TABLE1
WHERE `name` LIKE '%$search%'
UNION
SELECT null,other_id,name FROM TABLE2
WHERE `name` LIKE '%$search%'
由于您的第二个表中只有另一个\u id,name,因此第二个表的结果的联合id将为null。这一个有效。不过我必须给这些列起名字,这样我才能不同于其他列的名字。这不是我想要的。我只想要第一个表中的行,其名称类似于search,或者连接到该行的第二个表的名称类似于search。您的查询为我提供了第一个和第二个表中具有类似搜索名称的所有行。