如何解决存在的SQL查询并计数子查询中的许多字段
page = params[:page].to_i
per_page = 8
starting_offset = 3
offset = starting_offset + ((page - 1) * per_page)
@looks = Look.search query,where: conditions,order: { created_at: :desc },page: page,per_page: per_page,offset: offset
我知道我可以对所有条目进行2个查询。但是我正在寻找是否有可能在1个查询中仅包含double,triple等记录。
这可能吗?
解决方法
在那里有一个EXISTS
子查询来限定您要选择的行。它不会在结果集中添加行或列。
将子查询的SELECT
子句中的列列表缩小为任意一个列,甚至是文字(例如SELECT 1
),您都将得到重复项:>
SELECT *
FROM j_1gvl_ml AS jml
WHERE sptag IN @s_sptag AND
bukrs = @p_bukrs AND
werks IN @s_werks AND
matnr IN @s_matnr AND
tract IN @s_tract AND
erdat IN @s_erdat AND
repid = @p_repid AND
EXISTS ( SELECT belnr
FROM j_1gvl_ml
WHERE vrsio = jml~vrsio AND
sptag = jml~sptag AND
whbcode = jml~whbcode AND
bukrs = jml~bukrs AND
belnr = jml~belnr AND
buzei = jml~buzei AND
werks = jml~werks AND
locat = jml~locat AND
matnr = jml~matnr AND
bwtar = jml~bwtar AND
orgn = jml~orgn
GROUP BY vrsio,whbcode,bukrs,belnr,buzei,werks,locat,matnr,bwtar,orgn
HAVING COUNT( * ) > 1 )
INTO TABLE @itj_1gvl_ml.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。