[英]mySQL SELECT values from a TABLE where the TABLE name is based on a field value
[英]Select value from mysql table when field equal to many values
我有2個字段的簡單mysql表:
atr_id | atr_val_id
1 | 100
1 | 200
1 | 300
2 | 100
3 | 100
3 | 200
4 | 200
例如,如何選擇具有atr_val_id = 100 AND 200且僅此的所有atr_ids值? 在該示例中,這僅是atr_id = 3。 或例如僅200,則為atr_id = 4
可能會有更簡單的方法。 這是一種使用group by,group_contact,distinct,sort和Have子句的混合來獲取所需結果的解決方案
所有atr_val_id = 100和200的atr_ids值,僅此而已。 這只會返回atr_id = 3
select
atr_id
from
tbl_test
group by
atr_id
having
group_concat(distinct atr_val_id order by atr_val_id asc) = '100,200'
並且僅返回200,這將返回atr_id = 4
select
atr_id
from
tbl_test
group by
atr_id
having
group_concat(distinct atr_val_id order by atr_val_id asc) = '200'
另一種方法是使用如下的NOT EXISTS
select atr_id
from table_name t1
where atr_val_id in(100,200)
AND NOT EXISTS
(
select 1
from table_name t2
where t2.atr_id = t1.atr_id
group by t2.atr_id
having count(t2.atr_val_id) < 2 OR count(t2.atr_val_id) > 2
)
group by t1.atr_id
;
您可以根據要查看的atr_val_id的數量來更改計數部分。 只需說200就可以了
having count(t2.atr_val_id) < 1 OR count(t2.atr_val_id) > 1
隨后,您還需要更改IN子句。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.