gpt4 book ai didi

MySQL 查询条件或

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:32 26 4
gpt4 key购买 nike

我与 virutemart 合作,我有一张表存储有关订单和用户地址的所有信息。当用户登录时,他们会给我一个地址,我称之为“BillTo”,但当他们制作和订购时,用户可以创建一个名为“shipto”的新地址。因此,如果他们创建一个新地址“shipto”,我必须将发票发送到“billto”,并将订单项目发送到“shipto”。我正在尝试获取所有地址以发送订单商品。所以我有这样的 table

ORDER_ID   |   TYPE   |   ADDRESS
----------------------------------
1 BT My office
1 ST My house
2 BT Home home home
3 BT office
3 ST office 2

我需要获取所有的ST地址,如果不存在则获取BT地址。

1           ST           My house
2 BT Home home home
3 ST office 2

我该怎么做?

编辑:

这是我的 SQL 查询。选择 o.order_number,os.order_status_name,ou.first_name oulast_nameoulast_name2ouphone_1,ou.phone_2,ou.address_1,ou.address_2,ou.zip,ou.city,uv.fieldtitle

#__virtuemart_product_campaignspc

LEFT JOIN #__virtuemart_order_items AS oi ON (pc.virtuemart_product_id = oi.virtuemart_product_id)

LEFT JOIN #__virtuemart_orders AS o ON (oi.virtuemart_order_id = o.virtuemart_order_id)

LEFT JOIN #__virtuemart_orderstates AS os ON (os.order_status_code = o.order_status)

LEFT JOIN #__virtuemart_order_userinfos AS ou ON (ou.virtuemart_order_id = o.virtuemart_order_id)

LEFT JOIN #__virtuemart_userfield_values AS uv ON (uv.fieldvalue = ou.)

WHERE (o.order_status = 'U' OR o.order_status = 'C' OR o.order_status = 'S') AND pc.virtuemart_campaign_id = '133' AND ou.address_type = 'ST' ORDER BY o.virtuemart_order_id ASC

现在,y 从查询“AND ou.address_type = 'ST'”中删除并使用 foreach 从结果中删除重复项,但我想在同一个查询中完成这一切

最佳答案

一种方法是,如果“类型”是“ST”,则包含它,或者如果您的表有唯一行(例如,在您的情况下为 id 2),则也包含它。

SELECT * FROM table1 t1 
WHERE t1.TYPE='ST' OR
t1.ORDER_ID IN (select ORDER_ID from table1 group by ORDER_ID having count(*)=1 )

虽然它有嵌套查询,但考虑到您没有太多数据,将很容易实现。

关于MySQL 查询条件或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23405464/

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