Php 选择与名称和类别相同的项目
我不知道怎么形容这个问题,所以我会告诉你们我需要什么 我有一张这样的桌子:Php 选择与名称和类别相同的项目,php,mysql,database,Php,Mysql,Database,我不知道怎么形容这个问题,所以我会告诉你们我需要什么 我有一张这样的桌子: +----+----------------+------------+ | id | name | med | +----+----------------+------------+ | 1 | seclo | omeprazole | | 2 | something else | other | | 3 | ometid | ome
+----+----------------+------------+
| 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的med与记录1的med相同
我希望问题是清楚的。
提前谢谢 这对你有帮助
SELECT * FROM item WHERE med IN (SELECT med from item WHERE name LIKE '%{$search}%' OR med LIKE '%{$search}%')
您应该使用引用相同表的子查询来获取所需的
med
:
SELECT *
FROM item
WHERE med in (
SELECT med
FROM item
WHERE (name LIKE '%{$search}%' OR med LIKE '%{$search}%')
OR name LIKE '%{$search}%')
//试试这个
SELECT * FROM `item` WHERE `med` IN (SELECT `med` FROM `item` WHERE (`name` LIKE '%{$search}%' OR `med` LIKE '%{$search}%') OR `name` LIKE '%{$search}%')
我试图想出一个加入的解决方案,但这似乎真的更干净+1。谢谢!工作得很有魅力!我想你错过了结尾的一个括号。@MohammedSharfuddinShawon是的,我刚刚添加了它谢谢你的这个代码片段,它可能会提供一些有限的短期帮助。通过说明为什么这是一个很好的问题解决方案来正确解释它的长期价值,并将使它对未来有其他类似问题的读者更有用。请在您的回答中添加一些解释,包括您所做的假设。