选择与名称匹配的项和具有相同类别的项

qnyhuwrf  于 2021-06-25  发布在  Mysql
关注(0)|答案(3)|浏览(361)

我不知道怎么形容这个问题,所以我就给你们看看我需要什么。
我有一张这样的table:

+----+----------------+------------+
| id |      name      |    med     |
+----+----------------+------------+
|  1 | seclo          | omeprazole |
|  2 | something else | other      |
|  3 | ometid         | omeprazole |
+----+----------------+------------+

到目前为止,我一直在使用下面的查询来获取记录。

SELECT * FROM item WHERE (name LIKE '%{$search}%' OR med LIKE '%{$search}%')

但现在我想搜索名称(或med),并希望记录有相同的med作为那些匹配的名称。
如果我加上“秒”,我想要记录1和3,因为记录3和记录1有相同的med。
我希望问题很清楚。提前谢谢。

zzlelutf

zzlelutf1#

这对你有帮助

SELECT * FROM item WHERE med IN (SELECT med from item WHERE name LIKE '%{$search}%' OR med LIKE '%{$search}%')
zqry0prt

zqry0prt2#

//试试这个。。

SELECT * FROM `item` WHERE `med` IN (SELECT `med` FROM `item` WHERE (`name` LIKE '%{$search}%' OR `med` LIKE '%{$search}%') OR `name` LIKE '%{$search}%')
56lgkhnf

56lgkhnf3#

应该使用引用同一表的子查询来获取 med 需要:

SELECT * 
FROM item 
WHERE med in (
    SELECT med 
    FROM item 
    WHERE (name LIKE '%{$search}%' OR med LIKE '%{$search}%')
OR name LIKE '%{$search}%')

相关问题