我在两个不同的表中搜索包含用户输入的字符串的任何内容。
但是,我需要定义从哪个表中检索记录。
在下面的示例中,它可能就像在查询中放置常量字段一样简单,例如TYP
,在我的c#代码中,我会注意到:
TYP=0
- >这意味着它来自表tbl_parts
TYP=1
- >这意味着它来自表tbl_kits
我不太确定如何做到这一点。如何插入常量字段(该字段在查询中始终是相同的值)?还是有另一种更好的方法吗?
非常感谢任何帮助!
SELECT ID, PART_NUMBER, DESCRIPTION
FROM tbl_parts WHERE (
PART_NUMBER LIKE @SEARCH OR
DESCRIPTION LIKE @SEARCH
)
UNION
SELECT ID, KIT_NUMBER, DESCRIPTION
FROM tbl_kits WHERE (
KIT_NUMBER LIKE @SEARCH OR
DESCRIPTION LIKE @SEARCH
)
答案 0 :(得分:1)
这很简单。只需在查询中包含该列:
SELECT 'parts' as which, ID, PART_NUMBER, DESCRIPTION
FROM tbl_parts
WHERE PART_NUMBER LIKE @SEARCH OR DESCRIPTION LIKE @SEARCH
UNION ALL
SELECT 'kits' as which, ID, KIT_NUMBER, DESCRIPTION
FROM tbl_kits
WHERE KIT_NUMBER LIKE @SEARCH OR DESCRIPTION LIKE @SEARCH;
注意:我将UNION
更改为UNION ALL
。当您特别想要消除重复项的开销时,您应该只使用UNION
。因为表名不同,所以表之间没有重复。