用于显示具有两个或多个相同参数的记录的 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
=g01
和g02
的kdbarang
,所以结果是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 : 我说过我期望的结果是a01
在kdgudang
colomn 中有g01
和g02
【参考方案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
上述解决方案将返回a01
和a03
...是你要找的吗?
是的,但a03
不存在于g02
【参考方案4】:
你也可以试试
SELECT kdbarang
FROM barang
WHERE kdgudang in ('g01','g02')
GROUP BY kdbarang
HAVING COUNT(DISTINCT kdbarang ) > 0
先尝试一下,您应该会看到它们都添加了应该删除它们。
【讨论】:
以上是关于用于显示具有两个或多个相同参数的记录的 MySql 查询的主要内容,如果未能解决你的问题,请参考以下文章