mysql - SQL,查找两个给定名称在一列中是否具有相同数字的查询

标签 mysql sql mysql-workbench dbvisualizer

我已经尝试解决这个问题大约一周了。我真的需要有人的帮助。

我将得到两个或三个“LN”,我必须检查它们在“FODEX”列中的编号是否相同。然后,也许只需添加一列,如果它们具有相同的 FODEX,则打印一列,如果没有,则打印零。

我写了这个查询:

 SELECT  MSTR.LN , LINK.SEQNO, MMA5_MSTR.FODEX, MMA5_MSTR.DES, MSTR.SL
 FROM  (((MSTR INNER JOIN LINK
 ON MSTR.SEQNO = LINK.SEQNO) INNER JOIN MMA5_MSTR
 ON LINK.FODEX = MMA5_MSTR.FODEX))
 WHERE (MSTR.LN LIKE "%NOVOLLL%" OR MSTR.LN LIKE "%TRES%" OR MSTR.LN LIKE 
 "%ENBREL%")
 GROUP BY SEQNO, SL
 ORDER BY FODEX;

这是我得到的输出,

  LN       || SEQNO       ||   FODEX  ||     DES     ||  SL
 ----------------------------------------------------------------   
 TRES      || 71842       ||    13    ||  ANTIDIABE  ||  12
 NOVOLLL   || 44340       ||    13    ||  ANTIDIABE  ||  12
 NOVOLLL   || 44340       ||   1059   ||  ANTIDIABE  ||  55
 TRES      || 71842       ||   1059   ||  ANTIDIABE  ||  55
 TRES      || 71842       ||   1317   ||  ANTIDIABE  ||  66
 NOVOLLL   || 44340       ||   1317   ||  ANTIDIAB   ||  66
 ENBREL    || 40869       ||   1722   ||  TNe        ||  90
 ENBREL    || 40869       ||   29359  ||  IMMUNOSUPP ||  103

这是我想要得到的输出,

  LN       || SEQNO       ||   FODEX  ||     DES     ||  SL || Y/N
 ----------------------------------------------------------------   
 TRES      || 71842       ||    13    ||  ANTIDIABE  ||  12 || 1
 NOVOLLL   || 44340       ||    13    ||  ANTIDIABE  ||  12 || 1
 NOVOLLL   || 44340       ||   1059   ||  ANTIDIABE  ||  55 || 1
 TRES      || 71842       ||   1059   ||  ANTIDIABE  ||  55 || 1
 TRES      || 71842       ||   1317   ||  ANTIDIABE  ||  66 || 1
 NOVOLLL   || 44340       ||   1317   ||  ANTIDIAB   ||  66 || 1
 ENBREL    || 40869       ||   1722   ||  TNe        ||  90 || 0
 ENBREL    || 40869       ||   29359  ||  IMMUNOSUPP ||  103|| 0

最佳答案

我认为你可以通过聚合来做你想做的事情:

SELECT MSTR.LN,
       MAX(MMA5_MSTR.FODEX) = MIN(MMA5_MSTR.FODEX) as is_same_flag
FROM MSTR INNER JOIN
     LINK
     ON MSTR.SEQNO = LINK.SEQNO INNER JOIN
     MMA5_MSTR
     ON LINK.FODEX = MMA5_MSTR.FODEX
WHERE MSTR.LN LIKE '%NOVOLLL%' OR
      MSTR.LN LIKE '%TRES%' OR
      MSTR.LN LIKE '%ENBREL%'
GROUP BY LN;

这不会添加额外的列,但它似乎可以满足您的要求。

关于mysql - SQL,查找两个给定名称在一列中是否具有相同数字的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57565485/

相关文章:

mysql - 初学者 : Can't Order my WHERE Statements Properly with Subselect MIN?

mysql - 我怎样才能使这个 SQL 不可控制?

MYSQL 查询用户是否使用特定优惠券代码下订单

mysql - 如何在第一个分隔符之后显示列数据

mysql - 仅在数据库查询时名字和姓氏的首字母

sql - 使用循环引用创建表

mysql - sql 复合键帮助

MySQL:错误代码 1215 无法添加外键约束。我没有重复的主键并且所有数据类型都匹配

使用 IN 和 group_concat 结果的 Mysql 查询

mysql-workbench - 如何使用命令行从MySQL Workbench生成SQL脚本?