gpt4 book ai didi

mysql - SQL:发货/发票地址和 SELECT CONCAT 问题的表设计

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

我有一个简单的 customers 表是这样设计的(我只报告了一些字段,那些与这个问题有关的字段):

+ ----------- + --------------- + ---------------- +
+ customer_id + invoice_address + ship_address +
+ ----------- + --------------- + ---------------- +
+ 33 + 234, Walnut Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 66, Smart Ave + null +
+ ----------- + --------------- + ---------------- +
+ 47 + 4, Cool Ave + 45, Dark Street +
+ ----------- + --------------- + ---------------- +

ship_address 为空的行意味着我们也必须使用客户的发票地址进行运输。


第一个问题:这样的设计是否足够好,或者所有的null ship_address 字段都应该填写发票地址(即使相同)并且没有离开 null

第二个问题:保持这样的设计(即使它是糟糕的设计),我如何创建一个 SELECT 查询(如果可能的话)总是为每一行返回一个地址:ship_address 当 NOT null 时,否则只是 invoice_address,类似于:

SELECT CONCAT_IF_SHIP_ADDRESS_NOT_NULL_OTHERWISE_USE_ONLY_SHIP_ADDRESS(invoice_address, ship_address) AS address FROM customers;

查询 MySQL 数据库。

谢谢,

最佳答案

我认为架构很好。如果您使用的是 ms sql server,则可以使用 coalesce,如下所示:

select coalesce(ship_address,invoice_address) as address 
from customers

coalesce 基本上获取一个项目列表,并显示列表中第一个不为空的项目。

关于mysql - SQL:发货/发票地址和 SELECT CONCAT 问题的表设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4432596/

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