cha*_*lor 4 mysql sql join inner-join relational-division
我有一个名为的连接表languages_services基本上连接表services和languages.
我需要找到一个能够同时服务于ENGLISH (language_id=1)和ESPANOL的服务(language_id=2).
table languages_services
------------------------
service_id | language_id
------------------------
1 | 1
1 | 2
1 | 3
2 | 1
2 | 3
Run Code Online (Sandbox Code Playgroud)
使用上面提供的数据,我想测试language_id=1 AND language_id=2结果的样子
QUERY RESULT
------------
service_id
------------
1
Run Code Online (Sandbox Code Playgroud)
显然它不返回service_id = 2的那个,因为它不为Espanol提供服务.
任何提示都非常感谢!
SELECT
service_id
FROM
language_services
WHERE
language_id = 1
OR language_id = 2
GROUP BY
service_id
HAVING
COUNT(*) = 2
Run Code Online (Sandbox Code Playgroud)
要么...
WHERE
lanaguage_id IN (1,2)
GROUP BY
service_id
HAVING
COUNT(*) = 2
Run Code Online (Sandbox Code Playgroud)
如果你总是看两种语言,你可以用连接来做,但是聚合版本更容易适应不同数量的language_ids.(添加OR,或将项添加到IN列表,并更改COUNT(*) = 2为COUNT(*) = 3等,等).
但请注意,这种情况非常糟糕.使用这种表格结构,你无能为力.
编辑使用2种语言的连接的示例
SELECT
lang1.service_id
FROM
language_services AS lang1
INNER JOIN
language_services AS lang2
ON lang1.service_id = lang2.service_id
WHERE
lang1.language_id = 1
AND lang2.language_id = 2
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
141 次 |
| 最近记录: |