2012-01-02 54 views
0

比方说,我有这样的MySQL表:MySQL的 - 搜索现场两次

SQL

OK ..看到type场?类型0是当一个人知道和一种语言并且类型1是当一个人正在学习那种语言时。

,让我们说我有一些数据:

enter image description here

正如你所看到的,成员3uid(用户ID)对应。用户3由于类型0而知道中文,但是由于1类型,用户1是学习中文。

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

谢谢。

回答

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; 
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)