Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何连接2个mysql表 < >我想加入两个表来从两个表中获取数据,例如,考虑下面两个表: Table users: ID user_name email ... .... Table messages: ID user_name message ... ..._Mysql_Sql_Join - Fatal编程技术网

如何连接2个mysql表 < >我想加入两个表来从两个表中获取数据,例如,考虑下面两个表: Table users: ID user_name email ... .... Table messages: ID user_name message ... ...

如何连接2个mysql表 < >我想加入两个表来从两个表中获取数据,例如,考虑下面两个表: Table users: ID user_name email ... .... Table messages: ID user_name message ... ...,mysql,sql,join,Mysql,Sql,Join,user\u name是两个表中的公用列。如何连接两个表,以便从两个表中获取数据。例如,我想从表messages中选择“message”,从表users中选择“email”,其中用户名是abc。如果你看看MySQL网站,上面有很多例子。在大多数情况下,如果你展示了一些你尝试过的问题,但没有得到你想要的结果,人们会更乐意回答 select m.message, u.email from messages m join users u on m.user_name = u.use

user\u name
是两个表中的公用列。如何连接两个表,以便从两个表中获取数据。例如,我想从表
messages
中选择“
message
”,从表
users
中选择“
email
”,其中
用户名是abc。

如果你看看MySQL网站,上面有很多例子。在大多数情况下,如果你展示了一些你尝试过的问题,但没有得到你想要的结果,人们会更乐意回答

select m.message, u.email
from 
   messages m join users u on
      m.user_name = u.user_name
where
   u.user_name = 'abc'
select users.user_name, users.email, messages.message from users,messages where users.user_name=messages.user_name where users.user_name='abc'

这是一个相当基本的SQL语句。你可以做很多聪明的事情。你最好去看看还能做些什么,因为你可以使用参数等,而不是嵌入“abc”部分。

如果你看看MySQL网站,上面有很多例子。在大多数情况下,如果你展示了一些你尝试过的问题,但没有得到你想要的结果,人们会更乐意回答

select users.user_name, users.email, messages.message from users,messages where users.user_name=messages.user_name where users.user_name='abc'
这是一个相当基本的SQL语句。你可以做很多聪明的事情。你最好去看看还能做些什么,因为你可以使用参数等,而不是嵌入“abc”部分。

使用:

SELECT u.*, m.*
  FROM USERS u
  JOIN MESSAGES m ON m.user_name = u.user_name
 WHERE u.user_name = 'abc'
…以查看表中包含消息的所有用户。这意味着没有消息的用户将不会出现在输出中-因此您可能希望使用以下选项:

   SELECT u.*, m.*
     FROM USERS u
LEFT JOIN MESSAGES m ON m.user_name = u.user_name
    WHERE u.user_name = 'abc'
我建议:

  • 读报纸
  • 不使用用户名作为表之间链接数据的标准,因为用户名可能会更改,这将需要更新本例中的所有支持表
  • 不使用ANSI-89联接语法,因为它不支持外部联接,因此应被视为不推荐使用。我的例子是ANSI-92语法,并得到广泛支持
使用:

…以查看表中包含消息的所有用户。这意味着没有消息的用户将不会出现在输出中-因此您可能希望使用以下选项:

   SELECT u.*, m.*
     FROM USERS u
LEFT JOIN MESSAGES m ON m.user_name = u.user_name
    WHERE u.user_name = 'abc'
我建议:

  • 读报纸
  • 不使用用户名作为表之间链接数据的标准,因为用户名可能会更改,这将需要更新本例中的所有支持表
  • 不使用ANSI-89联接语法,因为它不支持外部联接,因此应被视为不推荐使用。我的例子是ANSI-92语法,并得到广泛支持

如果您希望两个表中的数据都匹配(因此不是没有消息的用户):

如果您想要所有用户,而不考虑消息以及拥有这些用户的用户的消息:

SELECT * FROM users u LEFT JOIN (messages m) ON (u.user_name = m.user_name);
编辑:对不起,我看错了

SELECT * FROM users u, messages m WHERE u.user_name = m.user_name AND u.user_name = "abc";

如果希望两个表中的数据都匹配(因此不是没有消息的用户):

如果您想要所有用户,而不考虑消息以及拥有这些用户的用户的消息:

SELECT * FROM users u LEFT JOIN (messages m) ON (u.user_name = m.user_name);
编辑:对不起,我看错了

SELECT * FROM users u, messages m WHERE u.user_name = m.user_name AND u.user_name = "abc";

恶心-ANSI-89连接语法:/:)这是我的数据库书籍中使用的语法。现在我知道它叫ANSI-89,还有ANSI-92。谢谢是的,它是有效的,但被认为是不推荐的。有点遗憾的是,当1992年的标准取代它时,教科书将其永久化了:/Yuck-ANSI-89 join syntax:/:)这是我在数据库书籍中使用的语法。现在我知道它叫ANSI-89,还有ANSI-92。谢谢是的,它是有效的,但被认为是不推荐的。有点遗憾的是,当1992年的标准取代它时,教科书将其永久化了:/你忘记了OP声明的
WHERE user\u name='abc'
要求。@Tomalak Geret'kal:更正,尽管添加自己是很简单的。你忘记了OP声明的
WHERE user\u name='abc'
要求。@Tomalak Geret'kal:更正,虽然有人加上自己的名字很简单,但我有诵读困难,我花了很多时间试图拼写正确。因此,我的语法往往会受到影响,因为我从来没有被教过。我几乎自学了我所知道的一切。因此,我很抱歉,但我很难过,因为我在一个网站上的语法问题受到了批评。@Tomalak Geret'kal:请以后多考虑一下-不是所有参加So/etc的人都是以英语为母语的,可能会有学习困难。提供建设性的批评是建议如何更好地重新编写,以防你(谢天谢地)自己无法完成。反思一下,不值得投反对票。很抱歉然而,这将阻止我投票,因为这不是一个通俗易懂的答案;例如,诵读困难症并不妨碍你写大写字母和句号。我是诵读困难症患者,我花了很多时间试图拼写正确。因此,我的语法往往会受到影响,因为我从来没有被教过。我几乎自学了我所知道的一切。因此,我很抱歉,但我很难过,因为我在一个网站上的语法问题受到了批评。@Tomalak Geret'kal:请以后多考虑一下-不是所有参加So/etc的人都是以英语为母语的,可能会有学习困难。提供建设性的批评是建议如何更好地重新编写,以防你(谢天谢地)自己无法完成。反思一下,不值得投反对票。很抱歉然而,这将阻止我投票,因为这不是一个通俗易懂的答案;例如,诵读困难症并不妨碍你写大写字母和句号。