MYSQL select查询,同一列必须存在多个条件

标签 mysql select

我正在组建一个约会网站,但遇到了 mysql 查询问题。

这有效:

SELECT *
FROM `user`
   , `desired_partner`
   , `user_personality`
WHERE dob BETWEEN '1957-05-18' AND '1988-05-18'
  AND country_id = '190'
  AND user.gender_id = '1'
  AND user.user_id = desired_partner.user_id
  AND desired_partner.gender_id = '2'
  AND user.user_id = user_personality.user_id
  AND user_personality.personality_id = '2'

该 SQL 查找美国 (country_id=190) 特定年龄范围内具有至少人格特质 2(以及可能的其他人格特质)的任何男性 (gender_id=1) ) 寻找女性 (gender_id=2)。

  • 问题 1) 如何使其仅返回具有 2 类人格特征而没有其他人格特征的人?

    Find any man in the USA that is between 22 and 53 that is of personality type 2 (only) that is looking for a woman.

  • 问题 2) 假设我想找到仅匹配性格类型 1、性格类型 2 和性格类型 5 的人。数据库中有 14 种性格特征,用户可以与其中任何一种性格特征相关联。

    Find any man in the USA that is between 22 and 53 that is of personality type 1, 2, and 5 (ONLY) that is looking for a woman.

--------添加更多信息:

1) 在美国寻找任何年龄在 22 到 53 岁之间(仅限性格类型 2)的男性,并且正在寻找女性。

sql 将使用这些表:

用户 期望的合作伙伴 用户个性

用户表包含我们要从数据库中获取的个人资料信息(user_id、desc、电子邮件、密码、dob、gender_id、country_id、state_id、city、ethnicity_id)

在desired_pa​​rtner表中告诉我们用户正在寻找什么伴侣(即男性、女性),主键是desired_pa​​rtner_id,并包含user_id和gender_id

在user_personality表中,主键是user_personality_id,包含user_id和personality_id

需要user_personality表,因为一个user_id可以与不同的personality_id关联。

personality_id可用于在personality表中查找personality_name,定义为:personality_id,personality_name

问题是这样的:

如果成员具有性格类型 1 和性格类型 4 该怎么办

这将在数据库中表示为:

用户个性表 用户个性 ID = 1 用户个性 ID = 1 个性 ID = 1 user_personality_id = 2 user_id = 1personality_id = 4

如果我想查找性格类型为 1 的人,那么下面的查询将不起作用,因为它将包含同时具有性格类型 4 的 user_id = 1。

从用户、user_personality中选择*,其中user.user_id = user_personality.user_id且user_personality.personality_id = 1

现在,假设一名成员想要搜索具有个性类型 1 和个性类型 5 且没有其他与他们的 user_id 关联的个性 ID 的男士。 sql 会是什么样子?

最佳答案

第一个问题:

您确定您的原始查询还返回其他个性类型吗?因为您明确要求类型 2
我看不出这应该如何返回其他人格。 (所以这已经是您第一个问题的答案)。

第二个问题:

使用IN运算符:

AND user_personality.personality_id IN ('1', '2', '5')
<小时/>

如果这没有帮助,您应该更好地解释您的表结构,以便我们知道它们之间存在什么样的关系。

关于MYSQL select查询,同一列必须存在多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2864213/

相关文章:

select - Jquery .select() 和 .live()

mysql - SQL查询在内部连接到右表后从左表中选择不同的行

java - JDBC 和 MySQL DATE 相差一个 - 如何更正

php - 将数据从表单存储到本地主机上的数据库表时出现的错误是什么

java - 使用 Liferay 选择框

json - jq - 如何有条件地过滤掉对象

javascript - 当下拉值更改时选择单选按钮

mysql - 评级系统查询

MySQL 创建高级查询

MySQL连接池和创建临时表