首页 > 解决方案 > 无法按名称连接两个表行 MySQL

问题描述

我正在尝试加入表格并获得与“名称”匹配的输出

我有 2 个表api_log_2api_security_2

TABLE 1 = api_log_2
----------------------------------
|id    |name        |email       |
---------------------------------
|101   |john test   |j@gm.io     |
|102   |gary rest   |g@gm.io     |
|102   |megh west   |m@gm.io     |
----------------------------------

TABLE 2 = api_security_2
----------------------------------
|vt    |name        |ipn         |
----------------------------------
|x12   |john test   |1245774     |
|e34   |gary rest   |2145876     |
|h76   |megh west   |9245228     |
----------------------------------

我的 SQL 查询

SELECT
  api_log_2.id,
  api_security_2.vt,
  api_security_2.name,
  api_security_2.ipn,
  api_log_2.email
 
FROM
 api_log_2,
 api_security_2
WHERE
 api_log_2.name = api_security_2.name
 AND 
 api_security_2.name = 'john test';

现在,问题是当我运行这个查询时,我没有得到结果。

编辑:我的名字之间有一个空格

标签: mysql

解决方案


使用正确的 JOIN 可以帮助您获得想要的结果。

别名也有帮助,减少输入。

CREATE TABLE api_log_2 (
  `id` INTEGER,
  `name` VARCHAR(4),
  `email` VARCHAR(7)
);

INSERT INTO api_log_2
  (`id`, `name`, `email`)
VALUES
  ('101', 'john', 'j@gm.io'),
  ('102', 'gary', 'g@gm.io'),
  ('102', 'megh', 'm@gm.io');
CREATE TABLE api_security_2 (
  `vt` VARCHAR(3),
  `name` VARCHAR(4),
  `ipn` INTEGER
);

INSERT INTO api_security_2
  (`vt`, `name`, `ipn`)
VALUES
  ('x12', 'john', '1245774'),
  ('e34', 'gary', '2145876'),
  ('h76', 'megh', '9245228');
SELECT
 al.id,
 ase.vt,
 ase.name,
 ase.ipn,
 al.email
 
FROM
 api_log_2 al INNER JOIN 
 api_security_2 ase  ON  al.name = ase.name
 WHERE
 ase.name = 'john';
编号 | vt | 姓名 | ipn | 电子邮件  
--: | :-- | :--- | ------: | :--------
101 | x12 | 约翰 | 1245774 | j@gm.io

db<>在这里摆弄

CREATE TABLE api_log_2 (
  `id` INTEGER,
  `name` VARCHAR(200),
  `email` VARCHAR(7)
);

INSERT INTO api_log_2
  (`id`, `name`, `email`)
VALUES
  ('101', 'john test', 'j@gm.io'),
  ('102', 'gary rest', 'g@gm.io'),
  ('102', 'megh west', 'm@gm.io');
CREATE TABLE api_security_2 (
  `vt` VARCHAR(3),
  `name` VARCHAR(200),
  `ipn` INTEGER
);

INSERT INTO api_security_2
  (`vt`, `name`, `ipn`)
VALUES
  ('x12', 'john test', '1245774'),
  ('e34', 'gary rest', '2145876'),
  ('h76', 'megh west', '9245228');
SELECT
 al.id,
 ase.vt,
 ase.name,
 ase.ipn,
 al.email
 
FROM
 api_log_2 al INNER JOIN 
 api_security_2 ase  ON  al.name = ase.name
 WHERE
 ase.name = 'john test';
编号 | vt | 姓名 | ipn | 电子邮件  
--: | :-- | :-------- | ------: | :--------
101 | x12 | 约翰测试 | 1245774 | j@gm.io

db<>在这里摆弄


推荐阅读