Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在多主键表中选择查询_Mysql - Fatal编程技术网

Mysql 在多主键表中选择查询

Mysql 在多主键表中选择查询,mysql,Mysql,我正在建立一个数据库,里面有健身练习和他们需要的设备 我的数据库是这样设计的 +-------+-----------------+ |id(主键)|装备(主键)| +-------+-----------------+ |1 |杠铃| |1 |工作台| |2 |哑铃| |2 |工作台| |3 |杠铃| |4 |哑铃| | ... | ..(许多行)| +-------+-----------------+ id代表某个练习,需要装备才能选择该练习 因此,对于练习1(id=1),你需要一

我正在建立一个数据库,里面有健身练习和他们需要的设备

我的数据库是这样设计的


+-------+-----------------+
|id(主键)|装备(主键)|
+-------+-----------------+
|1 |杠铃|
|1 |工作台|
|2 |哑铃|
|2 |工作台|
|3 |杠铃|
|4 |哑铃|
| ...   | ..(许多行)|
+-------+-----------------+

id代表某个练习,需要装备才能选择该练习

因此,对于练习1(id=1),你需要一个杠铃和长凳。 但是对于练习3(id=3),你只需要一个杠铃

因此,如果用户想要包含杠铃和长凳的练习,应选择id 1和3


当前查询

SELECT * FROM( SELECT id, GROUP_CONCAT(equip SEPARATOR ', ') equip
FROM equip group by id ) as x
这将得到以下结果

+-------+-----------------+
|id(主键)|装备(主键)|
+-------+-----------------+
|1 |杠铃、长凳|
|2 |哑铃、长凳|
|3 |杠铃|
|4 |哑铃|
| ...   | ..(许多行)|
+-------+-----------------+
所以如果我想搜索杠铃和板凳,应该选择1和3
非常感谢:)

我认为与其解释您的预期结果,不如解释您试图实施的业务规则,并让我们了解您所处的环境

还有,你说的“杠铃和板凳是真的”是什么意思?Varchar字段不能为true或false

例如,您的最后一行讨论了权重和支撑力,它们不包括在您的数据集中,可能有助于回答问题。因为我没有代表发表评论,所以我必须创建一个答案,因此这是我在没有更多信息的情况下的最佳拍摄:

select * from (
SELECT id, GROUP_CONCAT(equip SEPARATOR ', ') concatenatedEquip
FROM table GROUP BY id )
where (concatenatedEquip contains('Barbell') or concatenatedEquip 
contains('Bench'))

因此,此查询将

非常感谢您抽出时间,您的查询有一点帮助,我更改了我的问题,我希望现在问题清楚了。