我有以下表格:
项目(表) 没有 名称 价钱 描述
物品定制(表) 用户身份 的itemid 说明1 说明2
如果某个项目在项目自定义表格中有描述,我想显示该描述,否则我将显示项目表格中的描述。
我做了一个查询,其中我在item.no = item-custom.itemid上加入item-custom表。如果项目在项目自定义表中有描述,则此工作正常。但如果它没有描述,则查询不会返回任何数据。
我应该如何编写此查询,以便无论项目自定义表中是否有描述,我都会获得项目记录。
这就是我所拥有的:
SELECT item.description, item-custom.description1, item-custom.description
FROM item
INNER JOIN item-custom ON item.no = item-custom.itemid
答案 0 :(得分:3)
您可以使用左连接而不是内连接来执行此操作。您可以阅读有关左联接的更多信息here 内部联接仅从具有非可空列的两个表中获取记录。因此,如果description为空(NULL),则不会显示记录。使用左连接时,它会。
SELECT item.description, item-custom.description1, item-custom.description
FROM item
LEFT JOIN item-custom ON item.no = item-custom.itemid
答案 1 :(得分:2)
SELECT item.description, item-custom.description1, item-custom.description
FROM item
LEFT OUTER JOIN item-custom ON item.no = item-custom.itemid
答案 2 :(得分:1)
我认为这更适合你的病情
Sql Server:
SELECT ISNULL(item.description, item-custom.description) as descriptin
FROM item
LEFT OUTER JOIN item-custom ON item.no = item-custom.itemid
MySQL的
SELECT COALESCE(item.description, item-custom.description) as descriptin
FROM item
LEFT OUTER JOIN item-custom ON item.no = item-custom.itemid
ISNULL
或COALESCE
返回第一个非NULL参数
答案 3 :(得分:0)
尝试使用where子句
SELECT item.description, item-custom.description1, item-custom.description
FROM item as item , item-custom as item-custom
WHERE item.no = item-custom.itemid
答案 4 :(得分:0)
SELECT CASE WHEN item-custom.description2 IS NOT NULL
THEN item-custom.description2
ELSE item.description END, ...