【问题标题】:How to isolate query to find particular fields?如何隔离查询以查找特定字段?
【发布时间】:2018-05-16 05:59:11
【问题描述】:

这是我正在使用的数据库:https://drive.google.com/file/d/1ArJekOQpal0JFIr1h3NXYcFVngnCNUxg/view?usp=sharing

我正在尝试创建一个查询来输出仅的学者(acnum) 对“数据”(描述)字段感兴趣。

我试过了:

select acnum
from interest
where upper(descrip) like '%DATA%';

它部分有效,它找到对名称中带有“数据”的字段(描述)感兴趣的学者(acnum),但它也列出了除“数据”字段之外还有其他兴趣的学者(acnum),如何我是否可以找到仅对“数据”字段(描述)感兴趣的学者(acnum)?

谢谢。

【问题讨论】:

  • 能否提供result data和expected data

标签: mysql sql join sql-like


【解决方案1】:

要获得只对“数据”字段(描述)感兴趣的academics(acnum),您可以使用以下查询和一些聚合来满足您的条件

SELECT acnum
FROM interest
GROUP BY acnum
HAVING COUNT(*) = SUM(CASE WHEN UPPER(descrip) LIKE '%DATA%' THEN 1 ELSE 0 END)

【讨论】:

  • 如果使用 MySQL,则可以简写为 SUM(x LIKE '%y%')
【解决方案2】:

另一种方法——如果你想要更多关于学术的专栏——是not exists:

select a.*
from academics a
where not exists (select 1
                  from interest i
                  where a.acnum = i.acnum and upper(descrip) like '%DATA%'
                 );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    相关资源
    最近更新 更多