所以,想象我在每一個即用戶 10第3個相關的表,設置,activitylogs。很顯然users table
將有一個id
列作爲其主鍵,而settings table
和activitylogs table
將有一個user_id
列。運行下面的查詢將返回所有列,包括表settings
和activitylogs
中的users table
,user_id
列中的id
列。如何從我的'SELECT *'語句中排除列?
select * from users
inner join settings on users.id = settings.user_id
inner join on activitylog on users.id = activitylogs.user_id
的問題是,我不希望得到其他表user_id
列,我不想寫出來一個非常長的查詢確定所有我想要得到的列。所以我想我可以創建一個類似於這樣的查詢
select all except id from users
它也可以與連接一起使用。
select all except activitylogs.user_id, settings.user_id from users
inner join settings on users.id = settings.user_id
inner join activitylogs on users.id = activitylogs.user_id
這實際上會返回除明確指定的所有列。
- 我該怎麼做?我的意思是我需要使用哪些編程語言,或者我必須編輯mysql的源代碼還是做類似的事情?
- 這樣做會合法嗎?因爲我想在避免訴訟的同時做到這一點。
如果您有任何可以說與此相關的內容,或者如果您可以將我指向任何與此相關的博客文章,請這樣做。
有一條基本規則:*不要編寫SELECT *'n生產代碼,因爲沒有人知道按哪個順序返回哪些列(並且ALTER TABLE可能會更改它)。你提出的只是一個變化。標準SQL支持'join .. using',它只返回一個連接列而不是重複它。 – dnoeth
@dnoeth但仍然會包含'user_id'列嗎?如果我的建議無法完成,那麼如何在避免非常長的mysql查詢的情況下實現相同的結果? –
您只需列出您想要的列,這通常比所有列都少。順便說一句,大多數SQL編輯器可以幫助創建一個列列表... – dnoeth