繁体   English   中英

MYSQL从两个查询(不是表)中仅选择匹配的记录,然后按B查询对结果进行排序

[英]MYSQL select only matched record from two queries(not table) then sort the result by B query

伙计们,我遇到这样的情况,我想消除A中不在B中的项目( 请参阅QUERY A中的红色阻止的项目 ),以便获得类似查询C的结果,但之后我想对项目进行排序根据查询B在查询C中的每个TID

然后将其排序后看起来像查询c排序

比方说,例如ACD-> ADC( 请参见蓝色阻止的项目 ),它是根据查询B和按事务排序的

并且如果查询A中的项目与查询b根本不匹配,我想将其完全删除( 请参见tid 5

这是我的查询的图示

在此处输入图片说明

请帮助我解决这个问题,我的项目已经被卡住了。

SELECT A.TID,A.ITEM
FROM (QueryA) A
INNER JOIN (QueryB) B ON (B.ITEM=A.ITEM)
ORDER BY A.TID,B.FREQUENCY DESC

这将使您按QueryC-Sorted的方式先按TID,然后按频率降序。

我假设您正在尝试进入QueryC-Sorted,而没有实际尝试从数据库中的QueryA删除行。

正如您评论的那样,看到您的查询,也许您可​​以运行此查询

SELECT kode_faktur AS TID, 
       kode_brg AS ITEM, 
   COUNT( kode_brg ) AS support
FROM detail
GROUP BY TID,ITEM
HAVING support >= 100
ORDER BY TID, support DESC

如果那没有给你你想要的东西,你可以试试这个

SELECT A.kode_faktur AS TID,A.kode_brg AS ITEM
FROM detail A
INNER JOIN
( SELECT kode_brg AS ITEM, COUNT( kode_brg ) AS support 
  FROM detail GROUP BY kode_brg HAVING support >=100 
)B ON (B.ITEM = A.kode_brg)
ORDER BY A.kode_faktur,B.support DESC

我不知道你的意思,但我会尝试一些提示

广告1.我要消除A中不在B中的项目

 SELECT * FROM (queryA) as A WHERE item not in (SELECT item FROM queryB)

广告2。它根据查询B和交易进行排序

imo这是不可能的。 添加具有任意字母重量的新列,并按此新列进行排序

广告3.并且如果查询A中的项目与查询b根本不匹配,我想将其完全删除

像1:

 DELETE * FROM (queryA) as A WHERE item not in (SELECT item FROM queryB)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM