Mysql选择与另一个表记录

时间:2016-05-15 13:55:23

标签: php mysql

好的,所以我有一个包含optionID,optionName的表。它叫做user_options。我有一个包含userID,optionID的第二个表。它叫做user_selected_options。

user_options中的选项是为user_selected_options中的用户存储的,这很好。现在,在编辑用户时,我只想在user_selected_options中显示user_options中未为该用户选择的选项作为选择框。我怎么能这样做?

我希望这个问题有意义。如果不清楚,请告诉我,我会进一步解释。

感谢您的任何提示。

2 个答案:

答案 0 :(得分:1)

以下是使用not exists的一种方法:

select uo.*
from user_options uo
where not exists (select 1
                  from user_selected_options uso
                  where uso.optionId = uo.option_id and uso.userId = $userId
                 );

为获得最佳效果,请在user_selected_options(option_id, userId)上创建索引。

答案 1 :(得分:0)

你可以在不使用mysql的命令中使用,例如:

select * from user_options where optionID NOT IN(select optionID from user_selected_options where userID=10)

查看有关NOT IN http://www.w3resource.com/mysql/comparision-functions-and-operators/not-in.php

的更多示例