这是我的第一个stakoverflow问题,虽然我潜伏了很长一段时间。我正在用PHP / SQLite编写一个webapp,我正在尝试查找列名以及以下SQL查询:
SELECT lexemeid FROM lexeme, sense WHERE lexeme.lexemeid =
sense.senselexemeid AND (lexeme.lexeme LIKE '%apani%' OR lexeme.variant
LIKE '%apani%' OR lexeme.affixedform LIKE '%apani%' OR sense.example
LIKE '%apani%');
基本上,我正在为几个不同的领域提供全文查找。上面的查询有效,但我想得到我的通配符匹配每个结果的列的名称。基本上我想要像SELECT一样的上述查询更像是:
SELECT lexemeid, COLUMN NAME FROM...
我也欢迎任何使我的SQL查询外观/性能更好的想法(可能使用LIKE和IN ??)。我基本上试图加入lexeme.lexemeid和sense.senselexemeid并对文本字符串进行通配符查找(在本例中为“apani”)。
谢谢!
答案 0 :(得分:1)
假设您只在其中一列中匹配,则可以使用CASE语句。
SELECT lexemeid,
CASE WHEN lexeme.lexeme LIKE '%apani%' THEN 'lexeme'
WHEN lexeme.variant LIKE '%apani%' THEN 'variant'
...
WHEN sense.example LIKE '%apani%' THEN 'example'
END AS ColumnName
FROM ...