首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:如何选择所有行,其中第1行和第2行等于语句中的5个名称之一

SQL:如何选择所有行,其中第1行和第2行等于语句中的5个名称之一
EN

Stack Overflow用户
提问于 2019-05-14 13:22:08
回答 3查看 95关注 0票数 2

我有一张桌子,里面有大约100种药物相互作用。我试图做一个语句,在其中插入X个药物名称,它返回前两列中那些药物名称存在的所有行。

如果病人有双甲酚,华法林和利血平,它将返回第4和第6行的“表的例子”图片如下。

表中的例子:

我使用phpMyAdmin,它使用MySQL。我使用了一组标准的SELECT查询,其中的WHERE说MedikamentA和MedikamentB等于两种药物的名称,如:

代码语言:javascript
复制
SELECT * FROM MIdatabase 
WHERE MedikamentA = 'dicoumarol' 
  AND MedikamentB = 'ergotamine' " OR " MedikmentA = 'ergotamine' 
   OR MedikamentB = 'dicoumarol'

不完全正确,但我把它写在我的头上。可能需要换个OR,有点偏执。

我就快把头发从头顶上扯下来了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-14 13:51:23

我认为您的查询没有给出您期望的内容,因为它缺少括号。

实现你想要的最简单的方法是使用IN()

代码语言:javascript
复制
SELECT
  *
FROM
  MIdatabase
WHERE
  MedikamentA IN ('dicoumarol', 'warfarin', 'reserpine')
  AND MedikamentB IN ('dicoumarol', 'warfarin', 'reserpine');

上述查询与以下查询相同:

代码语言:javascript
复制
SELECT
  *
FROM
  MIdatabase
WHERE
  (
    MedikamentA = 'dicoumarol'
    OR MedikamentA = 'warfarin'
    OR MedikamentA = 'reserpine'
  )
  AND (
    MedikamentB = 'dicoumarol'
    OR MedikamentB = 'warfarin'
    OR MedikamentB = 'reserpine'
  );
票数 1
EN

Stack Overflow用户

发布于 2019-05-14 14:03:43

试着做这样的事情:

代码语言:javascript
复制
SELECT * FROM MIdatabase 
WHERE 'dicoumarol' IN ( MedikamentA, MedikamentB )
  AND 'ergotamine' IN ( MedikamentA, MedikamentB )
票数 2
EN

Stack Overflow用户

发布于 2019-05-14 14:04:17

您将需要多个LIKE语句以及OR语句,以满足为每个列调用多个药物的条件要求。类似语句的第二部分需要并且您将引用一个单独的列作为条件语句的一部分。

代码语言:javascript
复制
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';
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56131535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档