gpt4 book ai didi

mysql - SQL 从两个表中选择,如果 WHERE 子句为假,则获取列的空值

转载 作者:可可西里 更新时间:2023-11-01 07:49:27 24 4
gpt4 key购买 nike

http://sqlfiddle.com/#!9/cfd41ef/1

我想从 person 表中获取每一行,如果 WHERE 子句为假,我想获取空值。有没有办法做到这一点?提前致谢。

CREATE TABLE `pet` (
`owner_id` INT(11) NULL DEFAULT NULL,
`pet_type` ENUM('DOG','CAT') NULL DEFAULT NULL,
`pet_name` VARCHAR(50) NULL DEFAULT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

CREATE TABLE `person` (
`id` INT(11) NULL DEFAULT NULL,
`first_name` VARCHAR(50) NULL DEFAULT NULL,
`last_name` VARCHAR(50) NULL DEFAULT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;

INSERT INTO `person` (`id`, `first_name`, `last_name`) VALUES
(1, 'qwe', 'asd'),
(2, 'asd', 'fgh'),
(3, 'zxc', 'vbn');

INSERT INTO `pet` (`owner_id`, `pet_type`, `pet_name`) VALUES
(1, 'DOG', 'rex');

SELECT person.*, pet.pet_name FROM person LEFT JOIN pet ON person.id = pet.owner_id WHERE pet.pet_type = 'DOG'

感谢 Lukasz Szozda 和 Yogesh Sharma 的回答,将条件移动到 ON 可以满足我的要求

最佳答案

您可以将条件移动到ON:

SELECT person.*, pet.pet_name 
FROM person
LEFT JOIN pet
ON person.id = pet.owner_id
AND pet.pet_type = 'DOG';

SQLFiddle Demo

关于mysql - SQL 从两个表中选择,如果 WHERE 子句为假,则获取列的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50824378/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com