如何从MySQL表中拉出两行,这两行共有一个字段值,另一个字段不同?

时间:2012-10-25 15:26:47

标签: php mysql

如果我的问题没有意义,我道歉。让我详细解释一下这个场景。

我有一个名为“elements”的MySQL表。在该表中有两个MEDIUMINT字段,一个名为“user_id”,另一个名为“element_id”。

我想拉出用户(每次单独检查一个用户),这些用户在表格中有一行,其中element_id = 8,表格中的行有一个element_id = 9。

我尝试了以下查询,但它不起作用。有什么想法吗?

SELECT * FROM elements WHERE user_id=2 AND (element_id=8 AND element_id=9)

3 个答案:

答案 0 :(得分:1)

Nanne的解决方案有效:

SELECT * FROM elements as e, elements as ee WHERE e.user_id=2 AND e.element_id=8 AND e.user_id=ee.user_id AND ee.element_id=9

答案 1 :(得分:0)

这个

  

a)“user_id”值为2且“element_id”值为8的行,b)“user_id”值为2且“element_id”值为9的行。

转换为

(user_id = 2 AND element_id = 8) OR (user_id = 2 AND element_id = 9)

与(接近您自己的尝试)相同

user_id=2 AND (element_id=8 OR element_id=9)

答案 2 :(得分:0)

根据Aleks G的说法,他的建议应该有效。

SELECT * FROM elements WHERE user_id=2 AND (element_id=8 OR element_id=9)

应检索user_id等于“2”的所有行,其中element_id等于“8”(如果存在)AND element_id等于“9”(如果存在),甚至认为“OR”的工作方式如“如果存在则包括它”在结果中也是“。