gpt4 book ai didi

mysql - 即使某些引用为 NULL,也对数据进行排序

转载 作者:行者123 更新时间:2023-11-29 08:20:04 24 4
gpt4 key购买 nike

我想在名字之后对结果进行排序。因此需要多个表。现在我遇到的问题是,即使列中存在 null,我也想对名称进行排序。下面您可以找到一个应该代表问题的示例数据库:

我的表格

CREATE TABLE IF NOT EXISTS `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`desc` varchar(255) NOT NULL,
`price` decimal(10,0) NOT NULL,
`manufacturer_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

CREATE TABLE IF NOT EXISTS `manufacturer` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(255) NOT NULL,
`desc` varchar(255) NOT NULL,
`website` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

我的数据:

INSERT INTO `products` (`id`, `desc`, `price`, `manufacturer_id`) VALUES
(1, 'book', 12, 1),
(2, 'cup', 4, 2),
(3, 'Arbitrary product', 100, NULL);

INSERT INTO `manufacturer` (`id`, `title`, `desc`, `website`) VALUES
(1, 'Publisher', 'Lorem ipsum', 'www.stackoverflow.com'),
(2, 'Cup producer', 'Lorem ipsum', 'www.cup.com');

如果我执行SELECT * FROM products,我会得到三个结果。如果我想订购它,我有一个类似的查询

SELECT p.desc, p.price, m.title
FROM products p, manufacturer m
WHERE p.manufacturer_id = m.id
ORDER BY m.title

由于 products 中的 null 值,因此仅给出两个结果。即使其中有 null,是否可以在制造商标题之后对表 products 进行排序?

最佳答案

您通过说 p.manufacturer_id = m.id 进行了连接但你没有指定它,所以默认情况下它是一个内部联接,您希望有一个左连接,其中“左”表是产品表

SELECT p.desc, p.price, m.title
FROM products AS p
LEFT JOIN manufacturer AS m ON m.id = p.manufacturer_id
ORDER BY m.title

看看这张图片可以更好地理解 http://www.codeproject.com/KB/database/Visual_SQL_Joins/Visual_SQL_JOINS_V2.png

关于mysql - 即使某些引用为 NULL,也对数据进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19646400/

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