MySQL - 搜索字段两次

时间:2012-01-02 01:44:10

标签: mysql

我们说我有这个MySQL表:

SQL

好的..看看type字段?类型0是指一个人知道,语言和类型1是一个人学习该语言的时候。

让我们说我有一些数据:

enter image description here

如您所见,成员3uid(用户ID)对应。用户3因为0类型而知道中文,但由于1类型,用户1在哪里学习中文。

最后,让我们说我做了一个表格。它有两个select字段,其中填充了一系列语言选择。在某次提交后...... $lang_learning输出zh$language_know输出en。我如何找到一个说zh并且正在学习en但没有与language字段冲突的人,因为您实际上是在寻找它两次?

感谢。

2 个答案:

答案 0 :(得分:3)

您需要自我加入。试试这个。

SELECT t1.uid 
FROM languages t1
INNER JOIN languages t2 ON t1.uid = t2.uid
WHERE t1.language = 'zh' AND t1.type = 0
  AND t2.language = 'en' AND t2.type = 1;

答案 1 :(得分:0)

你不能用简单的查询来做,因为标准的'where'子句逐行考虑记录。简单查询无法“在一个记录中选择字段X为'a'的记录,而在另一个记录中字段X为'b'。

为此,您需要加入:

SELECT knows.uid
FROM yourtable AS knows
INNER JOIN yourtable AS learning ON knows.uid = learning.uid
WHERE (knows.language='zh' AND knows.type=0) AND (learning.language='en' AND knows.type=1)