选择加入会给出奇怪的结果

时间:2018-04-22 19:14:05

标签: mysql sql

我有下面的查询,在脸上似乎工作正常,但它给出一些奇怪的结果,我不确定数据问题或查询本身的错误。

查询格式为:

SELECT j.username, u.email, u.accountType
FROM users u JOIN
     j_users j
     ON j.email = u.email
WHERE j.email IN (select email FROM j_users);

users表可能包含相同电子邮件地址的多个条目,但accountType会有所不同。但是在j_useremail内是唯一的,这里的问题很奇怪,查询的结果如下:

|bob  |bob@gmail.com  |admin|
|bob  |bob@gmail.com  |user |
|     |bob@gmail.com  |mod  |
|steve|steve@gmail.com|admin|
|     |steve@gmail.com|user |
|     |steve@gmail.com|mod  |

从查询中可以看到任何可以解释这个的东西吗?或者是一种更好的方法来提取我感兴趣的数据(来自users表的所有值j_users}

编辑

感谢您指出冗余但是我的主要问题仍然存在,返回结果集中的某些行没有用户名,但在j_user表中这是一个必填字段,每行都有一个集合。如前所述,每个电子邮件在此表中都是唯一的,因此,如果用户名显示在一行中,肯定会显示所有具有相同电子邮件地址的行?

1 个答案:

答案 0 :(得分:1)

此查询应该执行您想要的操作:

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onActivityCreated(savedInstanceState);
      final  String text =getResources().getString(R.string.demo);

            new AsyncTask<Void, Void, Void>() {
                @Override
                protected Profile doInBackground(Void... params) {

        PersonalityInsights service = new PersonalityInsights();
                            service.setUsernameAndPassword("", "");
        service.setEndPoint("https://gateway.watsonplatform.net/personality-insights/api");

        Profile profile = service.getProfile(text);
       return profile;
               }

                @Override
                protected void onPostExecute(Profile profile) {
                    super.onPostExecute(profile);

        TextView output =  x.findViewById(R.id.output);
                 output.setText(profile.toString())
           }
              }.execute();

}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        final View x = inflater.inflate(R.layout.fragment_analyzer, container, false);
        EditText content=  x.findViewById(R.id.content);
        TextView output =  x.findViewById(R.id.output);
//        String text = content.getText().toString();
        return x;
    }

您的查询也应该有效,但这是多余的。您只是缺少let makeVepo: RecordFactory<any> = Record({ product: new makeProduct(), menu: new makeMenu(), formControls: new makeFormControls(), some: 10 }) export const vepo = new makeVepo() vepo.set('some', 200) 的用户名。