Py学习  »  DATABASE

Mysql选择根据一个WHERE条件获取表中的所有列

Printer • 4 年前 • 1436 次点击  

我想去 tokens 基于一个 WHERE 条件如果我愿意的话 SELECT Gregor 如果我们调查 committee 然后它应该重新获取令牌 Liza, Matt

表结构:

CREATE TABLE users(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255)
);

INSERT INTO users (name)
VALUES ("Gregor"),
    ("Liza"),
    ("Matt"),
    ("Bob");
    
CREATE TABLE committee(
    user_id INT,
    friend_id INT,
    member_id INT,
    PRIMARY KEY (`user_id`, `friend_id`, `member_id`),
    FOREIGN KEY (`user_id`) REFERENCES `users` (`id`),
    FOREIGN KEY (`friend_id`) REFERENCES `users` (`id`),
    FOREIGN KEY (`member_id`) REFERENCES `users` (`id`)
);
INSERT INTO committee (user_id, friend_id, member_id)
VALUES (1, 2, 3),
(1, 2, 4);

CREATE TABLE tokens(
    user_id INT,
    token VARCHAR(255)
);

INSERT INTO tokens (user_id, token)
VALUES (1, "lclasld2"),
    (2, "xxkakdasd"),
    (3, "123kdkfs"),
    (4, "hjj32");

目前我得到的问题是:

SELECT token FROM tokens WHERE user_id = 1;

它现在的表现:

user_id, token
1, lclasld2

当我运行查询时,我期望的是:

user_id, token
2, xxkakdasd
3, 123kdkfs
4, hjj32
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129173
文章 [ 2 ]  |  最新文章 4 年前
Sakops
Reply   •   1 楼
Sakops    4 年前

与其尝试在一行中插入所有值,不如尝试为每个单独的对象添加一个插入,如下所示: INSERT INTO TOKENS() VALUES(); INSERT INTO TOKENS() VALUES() ,等等。

nbk
Reply   •   2 楼
nbk    4 年前

您可以为用户_id1合并选择朋友_id和成员_id

SELECT
user_id, token
FROM tokens 
WHERE user_id IN (SELECT friend_id FROM committee WHERE user_id = 1 
                 UNION SELECT member_id FROM committee WHERE user_id = 1)
user_id | token    
------: | :--------
      2 | xxkakdasd
      3 | 123kdkfs 
      4 | hjj32    

db<>不停摆弄 here