用于显示具有两个或多个相同参数的记录的 MySql 查询

Posted

技术标签:

【中文标题】用于显示具有两个或多个相同参数的记录的 MySql 查询【英文标题】:MySql query for showing records that have two or more same parameters 【发布时间】:2013-12-11 07:50:27 【问题描述】:

我有一张桌子:

#tabel barang
kdgudang  | kdbarang | stok |
g01         a01         12
g01         a02         25
g02         a01          5
g01         a03          7

我想要的只是显示具有kdgudang=g01g02kdbarang,所以结果是kdbarang a01。 有人可以告诉我显示它的查询是什么吗? 我想要的查询是 not

SELECT * FROM barang WHERE kdbarang = 'a01'

但有些查询像

SELECT * FROM barang WHERE kdgudang = 'g01' and kdgudang = 'g02'
//it doesn't work, it returns zero result

【问题讨论】:

你是什么意思“和”?是“g01、g02 中的任何一个”吗? @Alma Do:不,它的意思是“和”。如果“任何……”我可以在查询中使用“或” and代替or.. 那么应该返回哪些记录? IE。哪一列必须对您的记录进行分组,以便您能够检查这两个值是否出现在该组中? @Alma Do : 我说过我期望的结果是a01kdgudang colomn 中有g01g02 【参考方案1】:

这就是我所做的。它返回了我的预期:

Select distinct kdbarang from barang 
where kdgudang = 'g02' and kdbarang in (
SELECT distinct kdbarang FROM barang where kdgudang = 'g01'
)

如果你和我有同样的情况,可能会有所帮助

【讨论】:

【参考方案2】:

试试这个:

 SELECT * FROM barang WHERE (( kdgudang = 'g01' or kdgudang = 'g02') and kdbarang = 'a01');

【讨论】:

是的,它会为您提供 kdgudang 的“g01”或“go2”的结果 你只想要 kdbarang ='a01' 吗? 是的,我希望结果是“a01”。但不是您的查询,您的查询与“select * from barang where kdbarang = 'a01'”相同 这是我所期待的:显示同时存在于仓库/kdgudang g01 和 g02 中的所有 kdbarang SELECT * FROM barang WHERE ((kdgudang = 'g01' or kdgudang = 'g02') 那么这个查询就够了......有什么问题?......如果它对你不一样那么你的问题就不清楚了【参考方案3】:

如果您尝试检索特定字段,请提及特定字段名称而不是 *(返回所有字段)。

试试这个:

SELECT kdbarang  FROM barang WHERE kdgudang = 'g01' or kdgudang = 'g02';

【讨论】:

也许我必须告诉你“事情”:D 前缀kd 是kode,在英文中表示code。所以kdgudang是仓库代码(外键,仓库表的主键)。 所以,故事是:我想显示仓库 g01 和 g02 中存在的所有 kdbarang 上述解决方案将返回a01a03...是你要找的吗? 是的,但a03 不存在于g02【参考方案4】:

你也可以试试

SELECT kdbarang  
FROM barang 
WHERE kdgudang in ('g01','g02')
GROUP BY kdbarang 
HAVING COUNT(DISTINCT kdbarang ) > 0

先尝试一下,您应该会看到它们都添加了应该删除它们。

【讨论】:

以上是关于用于显示具有两个或多个相同参数的记录的 MySql 查询的主要内容,如果未能解决你的问题,请参考以下文章

对具有相同模式名称的多个数据库使用 mysql 函数

两个或多个 Drupal 视图页面显示是不是可以共享相同的路径?

MyBatis怎样实现MySQL动态分页

来自多个表的 MySQL 最新相关记录

如何让mysql按照两个或多个字段排序

MySQL查找具有相同customerid且具有两个不同值的记录