这是我的第一个问题,尽管我已经潜伏了很长一段时间。 我正在用 PHP/SQLite 编写一个 Web 应用程序,我正在尝试查找列名以及以下 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")进行通配符查找。
谢谢!
假设其中一列中只有一个匹配项,则可以使用 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 ...