我有一张桌子,里面有大约100种药物相互作用。我试图做一个语句,在其中插入X个药物名称,它返回前两列中那些药物名称存在的所有行。
如果病人有双甲酚,华法林和利血平,它将返回第4和第6行的“表的例子”图片如下。
表中的例子:

我使用phpMyAdmin,它使用MySQL。我使用了一组标准的SELECT查询,其中的WHERE说MedikamentA和MedikamentB等于两种药物的名称,如:
SELECT * FROM MIdatabase
WHERE MedikamentA = 'dicoumarol'
AND MedikamentB = 'ergotamine' " OR " MedikmentA = 'ergotamine'
OR MedikamentB = 'dicoumarol'不完全正确,但我把它写在我的头上。可能需要换个OR,有点偏执。
我就快把头发从头顶上扯下来了。
发布于 2019-05-14 13:51:23
我认为您的查询没有给出您期望的内容,因为它缺少括号。
实现你想要的最简单的方法是使用IN()
SELECT
*
FROM
MIdatabase
WHERE
MedikamentA IN ('dicoumarol', 'warfarin', 'reserpine')
AND MedikamentB IN ('dicoumarol', 'warfarin', 'reserpine');上述查询与以下查询相同:
SELECT
*
FROM
MIdatabase
WHERE
(
MedikamentA = 'dicoumarol'
OR MedikamentA = 'warfarin'
OR MedikamentA = 'reserpine'
)
AND (
MedikamentB = 'dicoumarol'
OR MedikamentB = 'warfarin'
OR MedikamentB = 'reserpine'
);发布于 2019-05-14 14:03:43
试着做这样的事情:
SELECT * FROM MIdatabase
WHERE 'dicoumarol' IN ( MedikamentA, MedikamentB )
AND 'ergotamine' IN ( MedikamentA, MedikamentB )发布于 2019-05-14 14:04:17
您将需要多个LIKE语句以及OR语句,以满足为每个列调用多个药物的条件要求。类似语句的第二部分需要并且您将引用一个单独的列作为条件语句的一部分。
select * from table where MedikamentA like 'dicoumarol' or MedikamentA like 'warfarin' or MedikamentA like 'reserpine' and MedikamentB like 'dicoumarol' or MedikamentB like 'warfarin' or MedikamentB like 'reserpine';https://stackoverflow.com/questions/56131535
复制相似问题