我有 6 张桌子,我们称它们为 a、b、c、d、e、f。现在我想在所有表的所有列(ID 列除外)中搜索某个单词,比如说“Joe”。我所做的是,我对所有表进行了 INNER JOINS,然后使用 LIKE 搜索列。
INNER JOIN
...
ON
INNER JOIN
...
ON.......etc.
WHERE a.firstname
~* 'Joe'
OR a.lastname
~* 'Joe'
OR b.favorite_food
~* 'Joe'
OR c.job
~* 'Joe'.......etc.
结果是正确的,我得到了我正在寻找的所有列。但我也得到了某种笛卡尔积,我得到了两条或更多条线,结果几乎相同。
我怎样才能避免这种情况?我希望每行只有一次,因为结果应该出现在网络搜索中。
更新
我首先尝试SELECT DISTINCT
通过使用以下语句来确定这件事是否可行:pastie.org/970959但它仍然给了我一个笛卡尔积。这有什么问题?